Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <map>
- #include <set>
- #include <list>
- #include <cmath>
- #include <ctime>
- #include <deque>
- #include <queue>
- #include <stack>
- #include <string>
- #include <bitset>
- #include <cstdio>
- #include <limits>
- #include <vector>
- #include <climits>
- #include <cstring>
- #include <cstdlib>
- #include <fstream>
- #include <numeric>
- #include <sstream>
- #include <iostream>
- #include <algorithm>
- #include <unordered_map>
- using namespace std;
- size_t result = -1;
- void binarySearch(size_t min, size_t max, size_t target, const vector<size_t>& times){
- while(min <= max){
- size_t mid = min + (max - min) / 2;
- size_t pancakesSorFar = 0;
- for(size_t time : times)
- pancakesSorFar += (mid / time);
- if(pancakesSorFar >= target){
- result = mid;
- max = mid - 1;
- }
- else{
- min = mid + 1;
- }
- }
- }
- int main() {
- size_t n, k;
- cin >> n >> k;
- size_t maxTime = 0;
- vector<size_t> times(k);
- for(size_t i =0; i < k; i++){
- cin >> times[i];
- if(times[i] > maxTime)
- maxTime = times[i];
- }
- binarySearch(1, n * maxTime, n, times);
- cout << result;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment