fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. bool check(int n, int k, vector<int> &stalls, int mid){
  6. int lastPosition = stalls[0];
  7. k--;
  8. for(int i = 1; i<n; i++){
  9. if(stalls[i]-lastPosition >=mid){
  10. k--;
  11. lastPosition = stalls[i];
  12. }
  13. if(k==0) return true;
  14. }
  15. return false;
  16. }
  17.  
  18. int solve(int n, int k, vector<int> &stalls) {
  19. sort(stalls.begin(),stalls.end());
  20. int l = 0, r = 1e9, res = 0;
  21. while(l<=r){
  22. int mid = l + (r-l)/2;
  23. if(check(n, k, stalls, mid)){
  24. res=mid;
  25. l=mid+1;
  26. }else r=mid-1;
  27. }
  28. return res;
  29. }
  30.  
  31. int main() {
  32. int n = 5, k =3;
  33. vector<int>stalls={1,2,4,8,9};
  34. cout<<solve(n,k,stalls)<<endl;
  35. }
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
3