题目描述
Bessie 设计了一款新游戏:Angry Cows。在这个游戏中,玩家发射奶牛,每头奶牛落地时引爆一定范围内的干草。游戏的目标是使用一组奶牛引爆所有干草。
�N 捆干草排列在数轴上的不同位置。第 �i 捆干草的的位置为 ��xi。如果一个威力为 �R 的奶牛在 �x 位置落地,她将引爆 [�−�,�+�][x−R,x+R] 范围内的所有干草。
你现在可以发射 �K 头奶牛,每头奶牛的威力都是 �R,现在你需要确定 �R 的最小值,使得用 �K 头奶牛可以引爆所有干草。
输入格式
第一行两个整数 �,�N,K(1≤�≤5×1041≤N≤5×104,1≤�≤101≤K≤10)。
接下来 �N 行,第 �i 行一个整数 ��xi(0≤��≤1090≤xi≤109)。
输出格式
输出一个整数,即 �R 的最小值。
输入输出样例
输入 #1
7 2
20
25
18
8
10
3
1
输出 #1
5
代码如下:
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1e5+5;
int n,k,a[N]={};
int main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
int r=2*i,x=a[1],t=0;
for(int j=1;j<=k;j++){
x+=r;
while(a[t+1]<=x&&t+1<=n) t++;
x=a[t+1];
if(t==n){
printf("%d",i);
return0;
}
}
}
return 0;
}