제출 #1231501

#제출 시각아이디문제언어결과실행 시간메모리
1231501kunzaZa183로봇 (IOI13_robots)C++20
100 / 100
2094 ms10688 KiB
#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[]) { sort(X, X + A); sort(Y, Y + B, greater<int>()); for (int i = 0; i < T; i++) if (X[A - 1] <= W[i] && Y[0] <= S[i]) return -1; int l = 1, r = T; while (l < r) { int mid = (l + r) / 2; vector<int> vi(T); iota(vi.begin(), vi.end(), 0); sort(vi.begin(), vi.end(), [&](int a, int b) { return W[a] < W[b]; }); priority_queue<int> pqi; int in = 0; for (int i = 0; i < A; i++) { while (in < vi.size()) { if (W[vi[in]] < X[i]) { // cout << "IN " << mid << " " << S[vi[in]] << "\n"; pqi.push(S[vi[in]]); in++; } else break; } for (int j = 0; j < mid && !pqi.empty(); j++) { // cout << "OUT " << mid << " " << pqi.top() << "\n"; pqi.pop(); } } // cout << "X\n"; while (in < vi.size()) { // cout << "IN " << mid << " " << S[vi[in]] << "\n"; pqi.push(S[vi[in]]); in++; } for (int i = 0; i < B; i++) { for (int j = 0; j < mid && !pqi.empty() && Y[i] > pqi.top(); j++) { // cout << "OUT " << mid << " " << pqi.top() << "\n"; pqi.pop(); } } if (pqi.empty()) { r = mid; } else { l = mid + 1; } } return l; }
#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...