제출 #720702

#제출 시각아이디문제언어결과실행 시간메모리
720702PenguinsAreCute로봇 (IOI13_robots)C++17
100 / 100
940 ms29080 KiB
#include "robots.h" #include <bits/stdc++.h> using namespace std; #define pb push_back typedef vector<int> vi; #define REP(i, a, b) for(int i = a; i < b; i++) int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { sort(X, X + A); sort(Y, Y + B); vi wV[A + 1], sV[B + 1]; REP(i, 0, T) { W[i] = upper_bound(X, X + A, W[i]) - X; wV[W[i]].pb(i); } REP(i, 0, T) { S[i] = upper_bound(Y, Y + B, S[i]) - Y; sV[S[i]].pb(i); } int l = 0, h = T + 1; while(h - l > 1) { int mid = (l + h) / 2; priority_queue<int> pq; REP(i, 0, A) { for(auto j: wV[i]) pq.push(S[j]); for(int j = 0; j < mid && !pq.empty(); j++) pq.pop(); } for(auto i: wV[A]) pq.push(S[i]); bool ok = true; for(int i = 0; !pq.empty(); i++) { if(!pq.empty() && pq.top() >= B - i) { ok = false; break; } for(int j = 0; j < mid && !pq.empty(); j++) pq.pop(); } if(ok) h = mid; else l = mid; } if(h == T + 1) return -1; return h; }
#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...