Advertisement
Guest User

Untitled

a guest
Apr 25th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. long long a[100005];
  6. long long k,n;
  7.  
  8. void qsort(int l,int r){
  9. int i=l,j=r;
  10. int x = a[(i+j)/2];
  11. while (a[i] < x) i++;
  12. while (a[j] > x) j--;
  13. if (i<=j){
  14. swap(a[i],a[j]);
  15. i++;
  16. j--;
  17. }
  18. if (i<r) qsort(i,r);
  19. if (j>l) qsort(l,j);
  20. }
  21.  
  22. int main() {
  23. ios_base::sync_with_stdio(0);
  24. cin >> n >> k;
  25. for (int i(0); i<n; i++){
  26. cin >> a[i];
  27. }
  28. qsort(0,n-1);
  29.  
  30. long long l=0, r=a[n-1]-a[0], ans=0;
  31. while (l<=r){
  32. long long mid=(l+r)/2;
  33. long long f=0, lst=0, kk=1;
  34. int nn=0;
  35. for (int i(0); i<n; i++){
  36. if (a[i]-a[0]>mid) {
  37. lst=a[i-1];
  38. nn=i;
  39. break;
  40. }
  41. }
  42.  
  43. for (int i(nn); i<n; i++){
  44. // cout << i << " ";
  45. if (a[i]-lst>mid) {
  46. kk++;
  47. if (kk>k) break;
  48. for (int j(i); j<n; j++){
  49. if (a[j]-a[i]<=mid) lst=a[j];
  50. else {
  51. i=j-1;
  52. break;
  53. }
  54. }
  55. }
  56. }
  57. // cout << endl;
  58. if (kk>k) f=1;
  59. if (f==0) {
  60. r=mid-1;
  61. ans=mid;
  62. }
  63. else {
  64. l=mid+1;
  65. }
  66. }
  67.  
  68. cout << ans << endl;
  69. return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement