Submission #1240125

#TimeUsernameProblemLanguageResultExecution timeMemory
1240125lechaaRobots (IOI13_robots)C++20
76 / 100
3062 ms32052 KiB
#include "robots.h" #include <bits/stdc++.h> using namespace std; int putaway(int a, int b, int t, int X[], int Y[], int W[], int S[]){ vector<int> x(a); for(int i = 0; i < a; i++){ x[i] = X[i]; } vector<int> y(b); for(int i = 0; i < b; i++){ y[i] = Y[i]; } vector<pair<int, int>> w(t); for(int i = 0; i < t; i++){ w[i].first = W[i]; } for(int i = 0; i < t; i++){ w[i].second = S[i]; } sort(x.begin(), x.end()); sort(y.begin(), y.end()); sort(w.begin(), w.end()); int low = 1; int top = t; int ns = -1; while(low <= top){ int mid = (low + top)/2; int it = 0; multiset<int> m; for(int i = 0; i < t; i++){ while(it < a){ if(x[it] <= w[i].first){ for(int y = 0; y < mid; y++){ if(m.size() == 0) break; m.erase(prev(m.end())); } it++; }else{ break; } } m.insert(w[i].second); } for(int y = it; y < a; y++){ for(int i = 0; i < mid; i++){ if(m.size() == 0) break; m.erase(prev(m.end())); } } it = 0; int h = 0; bool z = true; for(auto i : m){ while(it < b){ if(y[it] <= i || h == mid){ it++; h = 0; }else{ break; } } if(it == b){ z = false; break; } h++; } if(z){ ns = mid; top = mid-1; }else{ low = mid+1; } } //1e6 * 20 * 20 return ns; }
#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...