#include "robots.h"
#include <bits/stdc++.h>
using namespace std;
bool solve(int &k, int &A, int &B, int &T, int WR[], int SR[], int WT[], int ST[], vector<int> &ord, multiset<int, greater<>> sett) {
int j = 0, cnt = 0;
for(int i = 0; i < T; i++) {
int toy = ord[i];
if (cnt >= k) j++, cnt = 0;
if (j >= A) break;
if (WT[toy] < WR[j]) {
cnt++;
sett.erase(sett.find(ST[toy]));
}
}
j = 0, cnt = 0;
for(int s: sett) {
if (cnt >= k) j++, cnt = 0;
if (j >= B) return 0;
if (s < SR[j]) {
cnt++;
} else {
return 0;
}
}
return 1;
}
int putaway(int A, int B, int T, int WR[], int SR[], int WT[], int ST[]) {
sort(WR, WR + A, greater<>()), sort(SR, SR + B, greater<>());
vector<int> ord(T); iota(ord.begin(), ord.end(), 0);
sort(ord.begin(), ord.end(), [&](const int a, const int b) {return WT[a] > WT[b];});
multiset<int, greater<>> sett;
for(int i = 0; i < T; i++) sett.insert(ST[i]);
int l = 1, r = T+1;
while(l < r) {
int m = (l + r) / 2;
if (solve(m, A, B, T, WR, SR, WT, ST, ord, sett)) r = m;
else l = m + 1;
}
return (l == T+1 ? -1 : l);
}