# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1186133 | Gabp | 로봇 (IOI13_robots) | C++20 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
using namespace std;
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
vector<int> x(A), y(B);
for (int i = 0; i < A; i++) x[i] = X[i];
for (int i = 0; i < B; i++) y[i] = -Y[i];
sort(x.begin(), x.end());
sort(y.begin(), y.end());
vector<pair<int,int>> a(T);
for (int i = 0; i < T; i++) a[i] = {W[i], S[i]};
sort(a.begin(), a.end());
int lo = 1, hi = T;
int ans = -1;
while (lo <= hi) {
int mid = lo + (hi - lo) / 2;
int p = 0;
priority_queue<int> pq;
for (auto i: x) {
while (p < T && a[p].first < i) {
pq.push(a[p++].second);
}
for (int j = 0; j < mid && !pq.empty(); j++) pq.pop();
}
for (auto i: y) {
for (int j = 0; j < mid && !pq.empty() && pq.top() < -i; j++) pq.pop();
}
if (!pq.empty()) {
lo = mid + 1;
} else {
ans = mid;
hi = mid - 1;
}
}
return ans;
}