D_L3

puncakes

Jan 26th, 2024
715
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.22 KB | None | 0 0
  1. #include <map>
  2. #include <set>
  3. #include <list>
  4. #include <cmath>
  5. #include <ctime>
  6. #include <deque>
  7. #include <queue>
  8. #include <stack>
  9. #include <string>
  10. #include <bitset>
  11. #include <cstdio>
  12. #include <limits>
  13. #include <vector>
  14. #include <climits>
  15. #include <cstring>
  16. #include <cstdlib>
  17. #include <fstream>
  18. #include <numeric>
  19. #include <sstream>
  20. #include <iostream>
  21. #include <algorithm>
  22. #include <unordered_map>
  23.  
  24. using namespace std;
  25.  
  26.  
  27. size_t result = -1;
  28.  
  29. void binarySearch(size_t min, size_t max, size_t target, const vector<size_t>& times){
  30.     while(min <= max){
  31.         size_t mid = min + (max - min) / 2;
  32.         size_t pancakesSorFar = 0;
  33.         for(size_t time : times)
  34.             pancakesSorFar += (mid / time);
  35.  
  36.         if(pancakesSorFar >= target){
  37.             result = mid;
  38.             max = mid - 1;
  39.         }
  40.         else{
  41.             min = mid + 1;
  42.         }
  43.     }
  44. }
  45.  
  46. int main() {
  47.     size_t n, k;
  48.     cin >> n >> k;
  49.     size_t maxTime = 0;
  50.     vector<size_t> times(k);
  51.     for(size_t i =0; i < k; i++){
  52.         cin >> times[i];
  53.  
  54.         if(times[i] > maxTime)
  55.             maxTime = times[i];
  56.     }
  57.     binarySearch(1, n * maxTime, n, times);
  58.    
  59.     cout << result;
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment