Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
335805 | 黄浙峰老师 | 【C6-8】愤怒的奶牛 | C++ | 通过 | 100 | 37 MS | 644 KB | 844 | 2025-07-24 09:32:32 |
#include<bits/stdc++.h> using namespace std; int n, c, x[100005]; //牛棚数量,牛数量,牛棚坐标 bool check(int dis){ //检查牛棚够不够 int cnt=1,place=0; //第1头牛放在第1个牛棚 for(int i=1; i<n; i++) //检查后面的每个牛棚 if(x[i]-x[place] >= dis){ //如果超过dis的距离位置有牛棚 cnt++; // 放1头牛 place=i; //更新牛的位置 } if(cnt>=c) return 1; //牛棚够 else return 0; //牛棚不够 } int main(){ scanf("%d%d", &n, &c); for(int i=0; i<n; i++) scanf("%d", &x[i]); sort(x, x+n); //对牛棚坐标排序 //二分, 偏右 int left=0, right= x[n-1] - x[0]; int ans=0; while(left<right){ int mid= left+right>>1; if(check(mid)){ ans=mid; left=mid+1; }else right=mid; } cout<<ans; return 0; }