Submission #97116

#TimeUsernameProblemLanguageResultExecution timeMemory
97116E869120Robots (IOI13_robots)C++14
100 / 100
1452 ms28604 KiB
#include "robots.h" #include <bits/stdc++.h> using namespace std; int N, M, px[1000009], py[1000009], col[50009]; vector<int> V[50009]; bool solve(int pos) { priority_queue<int, vector<int>, less<int>> Q; for (int i = 0; i <= N; i++) { for (int j = 0; j < V[i].size(); j++) Q.push(V[i][j]); if (i == N) break; int cntv = 0; while (!Q.empty() && cntv < pos) { Q.pop(); cntv++; } } for (int i = 0; i <= M; i++) col[i] = 0; while (!Q.empty()) { col[Q.top()]++; Q.pop(); } if (col[M] >= 1) return false; long long sum = 0, L = 0; for (int i = M - 1; i >= 0; i--) { sum += pos; L += col[i]; if (L > sum) return false; } return true; } int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { N = A; M = B; sort(X, X + A); sort(Y, Y + B); for (int i = 0; i < T; i++) { int pos1 = upper_bound(X, X + A, W[i]) - X; px[i] = pos1; int pos2 = upper_bound(Y, Y + B, S[i]) - Y; py[i] = pos2; if (pos1 == A && pos2 == B) return -1; } for (int i = 0; i < T; i++) V[px[i]].push_back(py[i]); int L = 1, R = 1000005, MM, minx = (1 << 30); for (int i = 0; i < 25; i++) { MM = (L + R) / 2; bool t = solve(MM); if (t == true) { R = MM; minx = min(minx, MM); } else { L = MM; } } return minx; }

Compilation message (stderr)

robots.cpp: In function 'bool solve(int)':
robots.cpp:10:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int j = 0; j < V[i].size(); j++) Q.push(V[i][j]);
                   ~~^~~~~~~~~~~~~
#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...