愤怒的牛

题目 愤怒的牛

image-46e78538

思路分析

029d5d66c90c05fd84806c67f6968382_720-6912658b

代码实现

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'

const int N=1e5+10;
int a[N];
int n,m;

bool check(int mid){
    int last=a[0];
    int cnt=1;
    for(int i=1;i<n;i++){
        if(a[i]-last>=mid){
            cnt++;
            last=a[i];
        }
    }
    if(cnt>=m)  return true;

    return false;
}

int main()
{
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>n>>m;
    for(int i=0;i<n;i++)    cin>>a[i];
    sort(a,a+n);
    int l=1,r=a[n-1];
    while(l<r){
        int mid=(l+r+1)/2;
        if(check(mid))  l=mid;
        else    r=mid-1;
    }
    cout<<r<<endl;
    return 0;
}

同类题型

视频讲解


⬅️ 小蓝与数轴 🏠 00-刷题理模型 ➡️ 排列硬币