Submission #108439

#TimeUsernameProblemLanguageResultExecution timeMemory
108439PeppaPigRobots (IOI13_robots)C++14
100 / 100
2627 ms28808 KiB
#include "robots.h" #include <bits/stdc++.h> #define pii pair<int, int> #define x first #define y second using namespace std; vector<pii> toy; int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { for(int i = 0; i < T; i++) toy.emplace_back(W[i], S[i]); sort(toy.begin(), toy.end()); sort(X, X+A), sort(Y, Y+B); auto chk = [&](int mid) { priority_queue<pii> Q; vector<bool> sel(T); int j = 0; for(int i = 0; i < A; i++) { int cnt = 0; while(j < T && toy[j].x < X[i]) Q.emplace(toy[j].y, j), ++j; while(!Q.empty() && cnt < mid) sel[Q.top().y] = true, Q.pop(), ++cnt; } while(j < T) Q.emplace(toy[j].y, j), ++j; for(int i = B-1; ~i; i--) { int cnt = 0; while(!Q.empty() && cnt < mid) { pii now = Q.top(); Q.pop(); if(now.x >= Y[i]) continue; sel[now.y] = true, ++cnt; } } for(int i = 0; i < T; i++) if(!sel[i]) return false; return true; }; int l = 0, r = T; while(l < r) { int mid = (l + r) >> 1; if(chk(mid)) r = mid; else l = mid+1; } if(!chk(r)) return -1; else return r; }
#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...