This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "robots.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pll;
#define all(x) (x).begin(),(x).end()
#define X first
#define Y second
#define sep ' '
#define debug(x) cerr << #x << ": " << x << endl;
const ll MAXN = 1e6 + 10;
int n, m, t;
vector<pll> toys;
vector<int> A, B;
inline bool solve(int k) {
priority_queue<int> pq;
int p = 0;
for (int e : A) {
while (p < int(toys.size()) && e >= toys[p].X) pq.push(toys[p++].Y);
int x = k;
while (x > 0 && !pq.empty()) {
pq.pop();
x--;
}
}
while (p < int(toys.size())) pq.push(toys[p++].Y);
vector<int> vec;
while (!pq.empty()) {
vec.push_back(pq.top());
pq.pop();
}
reverse(all(vec));
p = 0;
for (int e : B) {
int x = k;
while (p < int(vec.size()) && e >= vec[p] && x > 0) p++, x--;
}
return p >= int(vec.size());
}
int putaway(int A_, int B_, int T_, int X_[], int Y_[], int W_[], int S_[]) {
n = A_, m = B_, t = T_;
for (int i = 0; i < n; i++) A.push_back(X_[i] - 1);
for (int i = 0; i < m; i++) B.push_back(Y_[i] - 1);
for (int i = 0; i < t; i++)
toys.push_back({W_[i], S_[i]});
sort(all(A));
sort(all(B));
sort(all(toys));
int l = 1, r = t + 1;
while (l < r) {
int mid = (l + r) >> 1;
if (solve(mid)) r = mid;
else l = mid + 1;
}
return (l > t ? -1 : l);
}
# | 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... |