Submission #995507

#TimeUsernameProblemLanguageResultExecution timeMemory
995507CSQ31Robots (IOI13_robots)C++17
76 / 100
3046 ms42700 KiB
#include "robots.h" #include<bits/stdc++.h> using namespace std; #define fi first #define se second typedef pair<int,int> pii; int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { vector<int>x,y; for(int i=0;i<A;i++)x.push_back(X[i]); for(int i=0;i<B;i++)y.push_back(Y[i]); sort(x.begin(),x.end()); sort(y.begin(),y.end()); vector<pii>pt(T); for(int i=0;i<T;i++)pt[i] = {W[i],S[i]}; sort(pt.begin(),pt.end()); int l = 1,r = T; while(r>=l){ int mid = (l+r)/2; multiset<int,greater<int>>lft; int p = 0; for(int i=0;i<A;i++){ while(p<T && pt[p].fi < x[i]){ lft.insert(pt[p].se); p++; } for(int j=0;j<mid;j++){ if(lft.empty())break; lft.erase(lft.begin()); } } while(p!=T){ lft.insert(pt[p].se); p++; } //cout<<mid<<" "<<lft.size()<<'\n'; for(int i=B-1;i>=0;i--){ for(int j=0;j<mid;j++){ if(lft.empty())break; if(*lft.begin() >= y[i])break; lft.erase(lft.begin()); } } if(lft.empty())r = mid-1; else l = mid+1; } if(l == T+1)return -1; return l; }
#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...