제출 #426784

#제출 시각아이디문제언어결과실행 시간메모리
426784Aldas25로봇 (IOI13_robots)C++14
76 / 100
1756 ms12632 KiB
#include "robots.h" #include <bits/stdc++.h> using namespace std; #define FOR(i, a, b) for (int i = (a); i <= (b); i++) #define REP(n) FOR(O, 1, (n)) #define f first #define s second #define pb push_back typedef pair<int, int> pii; typedef vector<int> vi; typedef vector<pii> vii; typedef long long ll; typedef vector<ll> vl; const int MAXN = 1000100; int a, b, t; vi x, y; vii toys; //bool taken[MAXN]; bool check (int k) { priority_queue<int> q; int tId = 0; FOR(i, 0, a-1) { while (tId < t && toys[tId].f < x[i]) { q.push(toys[tId].s); tId++; } REP(k) { if (q.empty()) break; q.pop(); } } while (tId < t) { q.push(toys[tId].s); tId++; } FOR(i, 0, b-1) { REP(k) { if (q.empty()) break; if (q.top() >= y[i]) break; q.pop(); } } if (q.empty()) return true; else return false; } int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { a = A, b = B, t = T; FOR(i, 0, a-1) x.pb(X[i]); FOR(i, 0, b-1) y.pb(Y[i]); FOR(i, 0, t-1) toys.pb({W[i], S[i]}); sort(x.begin(), x.end()); sort(y.begin(), y.end()); reverse(y.begin(), y.end()); sort(toys.begin(), toys.end()); FOR(i, 0, t-1) if ((a > 0 && W[i] >= x[a-1]) && (b > 0 && S[i] >= y[0])) return -1; int le = 0, ri = t; while (le < ri) { int mid = (le+ri)/2; if (check(mid)) ri = mid; else le = mid+1; } return le; }
#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...