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>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
using namespace std;
const int N=1e6+5;
int a,b,t,x[N],y[N];
vector<tuple<int,int,int>>order;
bool check(int lim)
{
multiset<pii>curS,curW;
for(int i=0;i<b;i++) curS.insert(mp(y[i],lim));
for(int i=0;i<a;i++) curW.insert(mp(x[i],lim));
for(auto&x:order)
{
int w=get<0>(x);
int s=get<1>(x);
int id=get<2>(x);
auto it=curS.upper_bound(mp(s,1e9));
if(it!=curS.end())
{
pii tmp=*it;
curS.erase(it);
if(tmp.se!=1) curS.insert(mp(tmp.fi,tmp.se-1));
}
else
{
auto it1=curW.upper_bound(mp(w,1e9));
if(it==curW.end()) return false;
pii tmp=*it1;
curW.erase(it1);
if(tmp.se!=1) curW.insert(mp(tmp.fi,tmp.se-1));
}
}
return true;
}
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[i]=X[i];
for(int i=0;i<B;i++) y[i]=Y[i];
order.resize(T);
for(int i=0;i<T;i++) order[i]=make_tuple(W[i],S[i],i);
sort(order.begin(),order.end());
reverse(order.begin(),order.end());
int l=1,r=T,res=-1;
while(l<=r)
{
int mid=(l+r)/2;
if(!check(mid)) l=mid+1;
else
{
res=mid;
r=mid-1;
}
}
return res;
}
Compilation message (stderr)
robots.cpp: In function 'bool check(int)':
robots.cpp:22:13: warning: unused variable 'id' [-Wunused-variable]
22 | int id=get<2>(x);
| ^~
# | 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... |