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 N=1e6;
pair<int,int> p[N];
multiset<pair<int,int> > s1;
multiset<pair<int,int> > ::iterator it;
multiset<int> s;
int cur[50004];
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
    for (int i=0;i<T;i++)
    {
        p[i]={W[i],S[i]};
    }
    sort(p,p+T);
    sort(X,X+A);
    reverse(p,p+T);
    reverse(X,X+A);
    int low=1,high=T,ans=-1,mid;
    while (low<=high)
    {
        s.clear();
        s1.clear();
        memset(cur,0,sizeof cur);
        for (int i=0;i<B;i++)
        {
            s1.insert(make_pair(Y[i],i));
        }
        s1.insert(make_pair(2e9+1,0));
        mid= (low+high)/2;
        long long x=0;
        int cnt=0;
        bool yes=true;
        for (int i=0;i<T;i++)
        {
            while (cnt<A&&p[i].first<X[cnt])
            {
                cnt++;
                x+=mid;
            }
            s.insert(p[i].second);
            if (!x)
            {
                if (s.empty())
                {
                    yes=false;
                    break;
                }
                it= s1.lower_bound(make_pair(*s.begin(),B));
                if ((*it).first==2e9+1)
                {
                    yes=false;
                    break;
                }
                pair<int,int> P= *it;
                cur[P.second]++;
                if (cur[P.second]==mid)
                {
                    s1.erase(it);
                }
                s.erase(s.begin());
            }
            else
            {
                x--;
            }
        }
        if (yes)
        {
            ans=mid;
            high=mid-1;
        }
        else
            low=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... |