Advertisement
mickypinata

TOI11: Labor At The Dock

Apr 26th, 2020
445
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.85 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. #define lli long long
  7.  
  8. vector<int> carry;
  9. int nw;
  10. lli ni;
  11.  
  12. bool CanCarry(lli t){
  13.     lli r = ni;
  14.     for(int i = 0; i < nw; ++i){
  15.         r -= (t / carry[i]);
  16.         if(r <= 0){
  17.             return true;
  18.         }
  19.     }
  20.     return false;
  21. }
  22.  
  23. int main(){
  24.  
  25.     int x;
  26.  
  27.     scanf("%d %lld", &nw, &ni);
  28.     carry.assign(nw, 0);
  29.     for(int i = 0; i < nw; ++i){
  30.         scanf("%d", &x);
  31.         carry[i] = x;
  32.     }
  33.     sort(carry.begin(), carry.end());
  34.  
  35.     lli l = carry[0];
  36.     lli r = carry[0] * ni;
  37.     lli ans = carry[0] * ni;
  38.     while(l <= r){
  39.         lli m = (l + r) / 2;
  40.         if(CanCarry(m)){
  41.             ans = min(ans, m);
  42.             r = m - 1;
  43.         } else {
  44.             l = m + 1;
  45.         }
  46.     }
  47.     cout << ans;
  48.  
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement