Submission #135948

#TimeUsernameProblemLanguageResultExecution timeMemory
135948TalantRobots (IOI13_robots)C++17
100 / 100
1396 ms30252 KiB
#include "robots.h" //#include "grader.cpp" #include <bits/stdc++.h> #define sc second #define fr first #define mk make_pair #define pb push_back using namespace std; const int N = (1e6 + 5); const int inf = (1e9 + 7); int a,b,n; int x[N],y[N],w[N],s[N]; int mxw,mxs; int u[N]; vector <pair<int,int> > v; priority_queue<int> q; vector <int> vec; bool check (int cur) { int l = a; q = priority_queue <int> (); vec.clear(); for (int i = 1; i <= b; i ++) u[i] = 0; for (int i = n - 1; i >= 0;) { if (v[i].fr < x[l] && l > 0) { for (int j = i; j >= max(0,i - cur + 1); j --) q.push(-v[j].sc); i -= cur; l --; } else { q.push(-v[i].sc); vec.pb(-q.top()); q.pop(); i --; } } l = b; sort(vec.rbegin(),vec.rend()); for (int i = 0; i < vec.size(); i ++) { if (l == 0) return false; if (y[l] <= vec[i]) return false; if (vec[i] < y[l]) u[l] ++; if (u[l] == cur) l --; } return true; } int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { a = A,b = B,n = T; for (int i = 1; i <= a; i ++) { x[i] = X[i - 1]; mxw = max(x[i],mxw); } for (int j = 1; j <= b; j ++) { y[j] = Y[j - 1]; mxs = max(mxs,y[j]); } for (int i = 1; i <= n; i ++) { w[i] = W[i - 1],s[i] = S[i - 1]; v.pb(mk(w[i],s[i])); if (w[i] >= mxw && s[i] >= mxs) return -1; } sort(x + 1,x + a + 1); sort(y + 1,y + b + 1); sort(v.begin(),v.end()); int l = 1,r = n; while (r - l > 1) { int m = (r + l) >> 1; if (check (m)) r = m; else l = m; } if (!check(r)) return -1; if (check(l)) return l; return r; }

Compilation message (stderr)

robots.cpp: In function 'bool check(int)':
robots.cpp:47:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
           for (int i = 0; i < vec.size(); i ++) {
                           ~~^~~~~~~~~~~~
#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...