Submission #7015

#TimeUsernameProblemLanguageResultExecution timeMemory
7015gs13068Robots (IOI13_robots)C++98
0 / 100
4 ms17424 KiB
#include "robots.h" #include<algorithm> #include<set> int V[1000000]; std::pair<int,int> D[1000000]; int R[50000]; std::set<std::pair<int,int> > E; std::set<std::pair<int,int> >::iterator it; int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { int i,j,l,r,mid; for(i=0;i<T;i++) { D[i].first=S[i]+1; D[i].second=W[i]+1; } std::sort(X,X+A); std::sort(Y,Y+B); std::sort(D,D+T); for(i=0;i<T;i++)if(D[i].first>Y[B-1]&&D[i].second>X[A-1])return -1; l=1;r=T; while(l<r) { mid=(l+r)/2; E.clear(); for(i=0;i<T;i++)V[i]=0; for(i=0;i<A;i++) { R[i]=0; E.insert(std::make_pair(X[i],i)); } for(i=T-1;i>=0;i--)if(!E.empty()&&E.rbegin()->first<=D[i].second) { V[i]=1; it=E.lower_bound(std::make_pair(D[i].second,-1)); R[it->second]++; if(R[it->second]==mid)E.erase(it); } for(i=0;i<B;i++)R[i]=0; if(B) { j=B-1; for(i=T-1;i>=0&&j>=0;i--)if(!V[i]) { if(D[i].first>Y[j])break; R[j]++; if(R[j]==mid)j--; } } else for(i=T-1;i>=0;i--)if(!V[i])break; if(i<0)r=mid; else l=mid+1; } return r; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...