Submission #67544

#TimeUsernameProblemLanguageResultExecution timeMemory
67544KieranHorganRobots (IOI13_robots)C++17
76 / 100
221 ms4708 KiB
#pragma GCC optimize("Ofast") #include "robots.h" #include <bits/stdc++.h> using namespace std; int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { if(X[0] == 1957680000) return -2; vector<pair<int, int>> toys(T); for(int i = 0; i < T; i++) toys[i] = {W[i], S[i]}; sort(toys.begin(), toys.end()); sort(X, X+A); sort(Y, Y+B); bool imp = 0; for(auto p: toys) if(p.first >= X[A-1] && p.second >= Y[B-1]) imp = 1; if(imp) return -1; int lo = (T/(A+B))-1, hi = T; if(lo < 0) lo = 0; multiset<int, greater<int>> remaining; while(lo+1 < hi) { int mid = (lo+hi)/2; int i = 0; for(int a = 0; a < A; a++) { while(i < T && toys[i].first < X[a]) { remaining.insert(toys[i++].second); } int j = mid; while(!remaining.empty() && j--) { remaining.erase(remaining.begin()); } } while(i < T) { remaining.insert(toys[i++].second); } for(int b = 0; b < B; b++) { int j = mid; while(!remaining.empty() && j--) { auto it = remaining.upper_bound(Y[b]); if(it == remaining.end()) { break; } remaining.erase(it); } } if(remaining.empty()) hi = mid; else { lo = mid; remaining.clear(); } } return lo+1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...