#include "robots.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<ll, ll>
#define fi first
#define sec second
const ll INF = 2e18;
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
sort(X, X + A), sort(Y, Y + B);
vector<pii> items;
for(int i = 0; i < T; i++) items.push_back({W[i], S[i]});
sort(items.begin(), items.end());
ll lf = 1, rg = T, ans = -1;
for(;lf <= rg;){
ll mid = (lf + rg) / 2;
vector<ll> take_small(B + 5), take_weak(A + 5), unused;
set<pii> st;
for(int i = 0; i < B; i++){
st.insert({Y[i], i});
}
for(int i = T - 1; i >= 0; --i){
auto x = st.lower_bound({items[i].sec, INF});
if(x != st.end()){
take_small[(*x).sec]++;
if(take_small[(*x).sec] == mid) st.erase(x);
}
else{
unused.push_back(i);
}
}
reverse(unused.begin(), unused.end());
bool ok = 1;
ll cur = 0;
for(auto i : unused){
while(cur < A && (take_weak[cur] >= mid || items[i].fi >= X[cur])) cur++;
if(cur == A){
ok = 0;
break;
}
take_weak[cur]++;
}
if(ok){
ans = mid;
rg = mid - 1;
}
else lf = 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... |