|
- #include <algorithm>
- #include <iostream>
- #include <cmath>
- #include <cstring>
- #include <map>
- #include <string>
- #include <vector>
- #include <queue>
- #include <stack>
- #include <cstdio>
- #include <cstdlib>
- using namespace std;
- int n,m,a[100011];
- bool check(int jian)
- {
- int all=1,last=a[1];
- for(int i=2;i<=n;i++)
- {
- if(a[i]-last>=jian)
- all++,last=a[i];
- if(all>=m)
- return true;
- }
- return false;
- }
- int main()
- {
- scanf("%d%d",&n,&m);
- for(int i=1;i<=n;i++)
- scanf("%d",&a[i]);
- sort(a+1,a+1+n);
- int l=1,r=a[n]-a[1];
- while(l<r)
- {
- int mid=(l+r+1)>>1;
- if(check(mid)) l=mid;
- else r=mid-1;
- }
- printf("%d",l);
- return 0;
- }
复制代码 |
|