Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- long long a[100005];
- long long k,n;
- void qsort(int l,int r){
- int i=l,j=r;
- int x = a[(i+j)/2];
- while (a[i] < x) i++;
- while (a[j] > x) j--;
- if (i<=j){
- swap(a[i],a[j]);
- i++;
- j--;
- }
- if (i<r) qsort(i,r);
- if (j>l) qsort(l,j);
- }
- int main() {
- ios_base::sync_with_stdio(0);
- cin >> n >> k;
- for (int i(0); i<n; i++){
- cin >> a[i];
- }
- qsort(0,n-1);
- long long l=0, r=a[n-1]-a[0], ans=0;
- while (l<=r){
- long long mid=(l+r)/2;
- long long f=0, lst=0, kk=1;
- int nn=0;
- for (int i(0); i<n; i++){
- if (a[i]-a[0]>mid) {
- lst=a[i-1];
- nn=i;
- break;
- }
- }
- for (int i(nn); i<n; i++){
- // cout << i << " ";
- if (a[i]-lst>mid) {
- kk++;
- if (kk>k) break;
- for (int j(i); j<n; j++){
- if (a[j]-a[i]<=mid) lst=a[j];
- else {
- i=j-1;
- break;
- }
- }
- }
- }
- // cout << endl;
- if (kk>k) f=1;
- if (f==0) {
- r=mid-1;
- ans=mid;
- }
- else {
- l=mid+1;
- }
- }
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement