#include <bits/stdc++.h>
#include "robots.h"
using namespace std;
int a, b, n;
vector <pair<int,int>> v;
int x[200005],y[200005];
bool check(int mid) {
priority_queue <int, vector <int>, greater<int>> q;
int cur = 0;
for (int i = 0; i < a; i++) {
while (cur < n && v[cur].first <= x[i]) {
q.push(v[cur].second);
cur++;
}
int cnt = mid;
while (cnt-- && !q.empty()) {
q.pop();
}
}
while (cur < n) {
q.push(v[cur].second);
cur++;
}
for (int i = 0; i < b; i++) {
if (q.empty()) break;
if (q.top() > y[i]) return false;
int cnt = mid;
while (cnt-- && !q.empty()) {
q.pop();
}
}
if (!q.empty()) return false;
return true;
}
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
a = A; b = B; n = T;
for (int i = 0; i < a; i++) {
x[i] = X[i];
}
for (int i = 0; i < b; i++) {
y[i] = Y[i];
}
for (int i = 0; i < n; i++) {
v.emplace_back(make_pair(W[i],S[i]));
}
sort(v.begin(),v.end());
sort(x,x+a);
sort(y,y+b,greater<int>());
int l = 0; int r = T;
int ans = -1;
while (l <= r) {
int mid = (l+r)/2;
if (check(mid)) {
r = mid - 1;
ans = mid;
} else {
l = mid + 1;
}
}
return ans;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |