Submission #657572

#TimeUsernameProblemLanguageResultExecution timeMemory
657572Do_you_copyRobots (IOI13_robots)C++17
100 / 100
1928 ms32704 KiB
/* Procrastination is the art of keeping up with yesterday */ #include <bits/stdc++.h> #include "robots.h" #define pb push_back #define fi first #define se second #define faster ios_base::sync_with_stdio(0); cin.tie(0); using namespace std; using ll = long long; using ld = long double; using pii = pair <int, int>; const int maxN = 1e6 + 1; //const int Mod = 1e9 + 7; int n, m, k; int X[maxN]; int Y[maxN]; int W[maxN]; int S[maxN]; int I[maxN]; int J[maxN]; bool mark[maxN]; bool check(int mid){ priority_queue <pii> PQ; int j = 1; fill(mark + 1, mark + k + 1, 0); for (int i = 1; i <= n; ++i){ while (j <= k && W[I[j]] < X[i]){ PQ.push({S[I[j]], I[j]}); ++j; } for (int _ = 0; _ < mid && PQ.size(); ++_){ mark[PQ.top().se] = 1; PQ.pop(); } } j = k; for (int i = m; i >= 1; --i){ int cnt = 0; while (j >= 1 && cnt < mid){ if (!mark[J[j]]){ if (S[J[j]] >= Y[i]){ return 0; } mark[J[j]] = 1; ++cnt; } --j; } } for (int i = 1; i <= k; ++i) if (!mark[i]) return 0; return 1; } int putaway(int A, int B, int C, int x[], int y[], int w[], int s[]){ n = A; m = B; k = C; int l = 1, r = maxN; for (int i = 1; i <= n; ++i) X[i] = x[i - 1]; for (int i = 1; i <= m; ++i) Y[i] = y[i - 1]; for (int i = 1; i <= k; ++i) W[i] = w[i - 1]; for (int i = 1; i <= k; ++i) S[i] = s[i - 1]; for (int i = 1; i <= k; ++i) I[i] = J[i] = i; sort(I + 1, I + k + 1,[&](const auto &i, const auto &j){ return W[i] < W[j]; }); sort(J + 1, J + k + 1,[&](const auto &i, const auto &j){ return S[i] < S[j]; }); sort(X + 1, X + n + 1); sort(Y + 1, Y + m + 1); while (l < r){ int mid = (l + r) >> 1; if (check(mid)) r = mid; else l = mid + 1; } if (l == maxN) return -1; return l; }
#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...