제출 #1155628

#제출 시각아이디문제언어결과실행 시간메모리
1155628alexddRobots (IOI13_robots)C++20
100 / 100
1228 ms13492 KiB
#include "robots.h" #include<bits/stdc++.h> using namespace std; vector<int> r1,r2; vector<pair<int,int>> v; bool verif(int cnt) { int poz=-1; priority_queue<int> pq; for(int x:r1) { while(poz+1<v.size() && v[poz+1].first < x) { poz++; pq.push(v[poz].second); } for(int pas=0;pas<cnt;pas++) { if(!pq.empty()) pq.pop(); else break; } } while(poz+1 < v.size()) { poz++; pq.push(v[poz].second); } for(int x:r2) { if(pq.empty()) break; if(pq.top() >= x) break; for(int pas=0;pas<cnt;pas++) { if(!pq.empty()) pq.pop(); else break; } } return pq.empty(); } int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { for(int i=0;i<A;i++) r1.push_back(X[i]); for(int i=0;i<B;i++) r2.push_back(Y[i]); for(int i=0;i<T;i++) v.push_back({W[i],S[i]}); sort(r1.begin(),r1.end()); sort(r2.begin(),r2.end()); reverse(r2.begin(),r2.end()); sort(v.begin(),v.end()); int st=0,dr=T,ans=-1; while(st<=dr) { int mij=(st+dr)/2; if(verif(mij)) { ans = mij; dr = mij-1; } else st = mij+1; } return ans; }
#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...