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;
const int maxn = 5e4;
int a, b, t;
vector<array<int,2>> toy;
vector<int> x, y;
bool check(int cur){
priority_queue<int> PQ;
for(int i = 0, cn = 0; i <= a; ++i){
for(;cn < t && toy[cn][0] < x[i]; ++cn){
PQ.push(toy[cn][1]);
}
if(i != a){
for(int j = 0; j < cur; ++j){
if(PQ.empty())break;
PQ.pop();
}
}
}
for(int i = b-1; i >= 0; --i){
for(int j = 0; j < cur; ++j){
if(PQ.empty())break;
if(PQ.top() >= y[i])break;
PQ.pop();
}
}
return PQ.empty();
}
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
a = A, b = B, t = T;
for(int i = 0; i < a; ++i)x.push_back(X[i]);
for(int i = 0; i < b; ++i)y.push_back(Y[i]);
for(int i = 0; i < t; ++i)toy.push_back({W[i],S[i]});
x.push_back((int)1e9);
sort(toy.begin(),toy.end());
sort(x.begin(),x.end());
sort(y.begin(),y.end());
int l = 1, r = t;
while(l < r){
int mid = (l+r)>>1;
if(check(mid))r = mid;
else l = mid+1;
}
return (check(l) ? l : -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... |