fork(13) download
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. using namespace std;
  5. int n,c,arr[100001];
  6.  
  7. bool whetherpossible(int dist){
  8. //checks whether cows can be placed with minimum distance dist between any two
  9. int i,cows_placed = 1; long long lastpos=arr[0];
  10. for(i=1;i<n;i++){
  11. if(arr[i]-lastpos>=dist){
  12. lastpos = arr[i];
  13. cows_placed++;
  14. if(cows_placed==c) return true;
  15. }
  16. }
  17. return false;
  18. }
  19.  
  20. int binarysearch(){
  21. int mid,start=0,end=arr[n-1]-arr[0];
  22. while(start<end){
  23. mid = (start+end)/2;
  24. if(whetherpossible(mid)) start = mid + 1;
  25. else end = mid;
  26. }
  27. return start-1;
  28. }
  29. int main() {
  30. // your code goes here
  31. int i,test;
  32. scanf("%d",&test);
  33. while(test--){
  34. scanf("%d%d",&n,&c);
  35. for(i=0;i<n;i++) scanf("%d",&arr[i]);
  36. sort(arr,arr+n);
  37. printf("%d\n",binarysearch());
  38. }
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 15632KB
stdin
Standard input is empty
stdout
Standard output is empty