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 <algorithm>
#include <queue>
#include <iostream>
#include <bitset>
#define pii pair<int, int>
#define fst first
#define snd second
#define ppi pair<pii, int>
using namespace std;
const int INF = 1e9;
int N, M, K, a[50001], b[50001];
pii ar[1000001], srt[1000001];
bitset<1000001> used;
priority_queue<pii> pq;
inline int eval(int k)
{
used.reset();
int j = 0;
for (int i = 0; i < M; i++)
{
for (; j < K && srt[j].fst < b[i]; j++) {pq.push({ar[srt[j].snd].fst, srt[j].snd});}
for (int j = 0; j < k && pq.size(); j++) {used[pq.top().snd] = 1; pq.pop();}
}
while (pq.size()) pq.pop();
j = N - 1;
for (int i = K - 1; i >= 0; i--)
{
if (!used[i])
{
for (; j >= 0 && a[j] > ar[i].fst; j--) {pq.push({0, j});}
if (pq.size()) {int u = pq.top().fst, v = pq.top().snd; pq.pop(); pq.push({u - 1, v});}
else {return INF;}
}
}
int ret = 0;
while (pq.size()) {ret = -pq.top().fst; pq.pop();}
return ret;
}
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[])
{
N = A; M = B; K = T;
for (int i = 0; i < N; i++) {a[i] = X[i];}
for (int i = 0; i < M; i++) {b[i] = Y[i];}
for (int i = 0; i < K; i++) {ar[i] = {W[i], S[i]};}
sort(a, a + N); sort(b, b + M); sort(ar, ar + K);
for (int i = 0; i < K; i++) {srt[i] = {ar[i].snd, i};}
sort(srt, srt + K);
int L = 0, R = T + 1;
while (L < R)
{
int M = L + R >> 1;
if (eval(M) > M) L = M + 1;
else R = M;
}
int res = INF;
for (int i = max(0, L - 1); i <= L; i++)
{
res = min(res, max(eval(i), i));
}
if (res == INF) return -1;
else return res;
}
Compilation message (stderr)
robots.cpp: In function 'int putaway(int, int, int, int*, int*, int*, int*)':
robots.cpp:59:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
59 | int M = L + R >> 1;
| ~~^~~
# | 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... |