Submission #67548

#TimeUsernameProblemLanguageResultExecution timeMemory
67548KieranHorganRobots (IOI13_robots)C++17
76 / 100
3058 ms25212 KiB
#pragma GCC optimize("Ofast") #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<pair<int, int>> toys(T); for(int i = 0; i < T; i++) toys[i] = {W[i], S[i]}; sort(toys.begin(), toys.end()); sort(X, X+A); sort(Y, Y+B); bool imp = 0; for(auto p: toys) if(p.first >= X[A-1] && p.second >= Y[B-1]) imp = 1; if(imp) return -1; int lo = (T/(A+B))-1, hi = T; if(lo < 0) lo = 0; multiset<int, greater<int>> remaining; while(lo+1 < hi) { int mid = (lo+hi)/2; int i = 0; for(int a = 0; a < A; a++) { while(i < T && toys[i].first < X[a]) { remaining.insert(toys[i++].second); } int j = mid; while(!remaining.empty() && j--) { remaining.erase(remaining.begin()); } if(remaining.size() > mid*(B+(A-a-1))) break; } if(remaining.size() > mid*B) { lo = mid; remaining.clear(); } while(i < T) { remaining.insert(toys[i++].second); } for(int b = 0; b < B; b++) { int j = mid; while(!remaining.empty() && j--) { auto it = remaining.upper_bound(Y[b]); if(it == remaining.end()) { break; } remaining.erase(it); } if(remaining.size() > mid*(B-b-1)) break; } if(remaining.empty()) hi = mid; else { lo = mid; remaining.clear(); } } return lo+1; }

Compilation message (stderr)

robots.cpp: In function 'int putaway(int, int, int, int*, int*, int*, int*)':
robots.cpp:37:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if(remaining.size() > mid*(B+(A-a-1)))
       ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
robots.cpp:40:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(remaining.size() > mid*B) {
      ~~~~~~~~~~~~~~~~~^~~~~~~
robots.cpp:56:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if(remaining.size() > mid*(B-b-1))
       ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
#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...