Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
127997 | 林扬泉 | 上古神器 | C++ | 通过 | 100 | 17 MS | 644 KB | 665 | 2024-01-25 11:20:59 |
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; int A[N]; int n,c,a; bool check(int x){ int num=0; int l=A[1]; for(int i=2;i<=n;i++){ if(A[i]-l<x){ num++; } else{ l=A[i]; } if(num>a){ return false; } } return true; } int main(){ scanf("%d%d",&n,&c); for(int i=1;i<=n;i++){ scanf("%d",&A[i]); } sort(A+1,A+n+1); a=n-c; int l=1; int r=A[n]-A[1]; while(l+1<r){ int mid=(l+r)/2; if(check(mid)){ l=mid; } else{ r=mid; } } if(check(r)){ printf("%d\n",r); } else{ printf("%d\n",l); } return 0; }