Submission #115245

#TimeUsernameProblemLanguageResultExecution timeMemory
115245oolimryRice Hub (IOI11_ricehub)C++14
17 / 100
26 ms3976 KiB
#include "ricehub.h" #include <bits/stdc++.h> using namespace std; int besthub(int R, int L, int X[], long long B) { vector<int> untaken; for(int i = 0;i < R;i++){ untaken.push_back(X[i]); } untaken.push_back(4 * L); sort(untaken.begin(),untaken.end()); reverse(untaken.begin(),untaken.end()); deque<int> left, right; ///front-closest, back-furthest long long acc = 0; int ans = 0; for(int i = 1;i <= L;i++){ bool stop = false; while(!right.empty() && right.front() == i-1){ right.pop_front(); left.push_front(i-1); } acc -= right.size(); acc += left.size(); while(true){ if(acc > B){ if(right.empty()){ acc -= abs(left.back() - i); left.pop_back(); } else if(left.empty()){ acc -= abs(right.back() - i); untaken.push_back(right.back()); right.pop_back(); stop = true; } else{ if(abs(right.back() - i) > abs(left.back() - i)){ acc -= abs(right.back() - i); untaken.push_back(right.back()); right.pop_back(); stop = true; } else{ acc -= abs(left.back() - i); left.pop_back(); } } } else{ if(stop) break; ans = max(ans, (int)(left.size() + right.size())); acc += abs(untaken.back() - i); right.push_back(untaken.back()); untaken.pop_back(); } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...