Submission #1141900

#TimeUsernameProblemLanguageResultExecution timeMemory
1141900SangRobots (IOI13_robots)C++20
100 / 100
1231 ms24996 KiB
#include<bits/stdc++.h> #include "robots.h" using namespace std; #define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; i++) #define FORD(i, a, b) for (int i = (a), _b = (b); i >= _b; i--) #define fi first #define se second #define pb push_back #define ALL(a) (a).begin(), (a).end() #define task "kbsiudthw" typedef vector<int> vi; typedef pair<int, int> ii; typedef pair<int, ii> pii; const int N = 1e6 + 5; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 2277; pii w[N], s[N]; bool marked[N]; int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]){ if (A) sort(X, X + A); if (B) sort(Y, Y + B); FOR (i, 0, T - 1) w[i] = {W[i], {S[i], i}}, s[i] = {S[i], {W[i], i}}; sort(w, w + T); sort(s, s + T); int l = 1, r = T, ans = -1; while (l <= r){ int m = (l + r)/2; FOR (i, 0, T - 1) marked[i] = 0; priority_queue<ii> Q; int ix = 0; int cnt = 0; FOR (i, 0, A - 1){ while (ix < T && w[ix].fi < X[i]){ Q.push(w[ix].se); ix++; } FOR (j, 1, m){ if (Q.empty()) break; marked[Q.top().se] = 1; Q.pop(); } } int iy = 0; FOR (i, 0, B - 1){ while (iy < T && (marked[s[iy].se.se] || s[iy].fi < Y[i])){ cnt += marked[s[iy].se.se] == 0; marked[s[iy].se.se] = 1; iy++; } cnt = max(0, cnt - m); } while (iy < T && marked[s[iy].se.se]) ++iy; if (iy == T && cnt == 0){ ans = m; r = m - 1; } else l = m + 1; } return ans; } //signed main(){ // ios_base::sync_with_stdio(0); // cin.tie(0); cout.tie(0); // if (fopen(task".inp", "r")){ // freopen(task".inp", "r", stdin); // freopen(task".out", "w", stdout); // } // int X[] = {6, 2, 9}; // int Y[] = {4, 7}; // int W[] = {4, 8, 2, 7, 1, 5, 3, 8, 7, 10}; // int S[] = {6, 5, 3, 9, 8, 1, 3, 7, 6, 5}; // cout << putaway(3, 2, 10, X, Y, W, S) << '\n'; // // return 0; //}
#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...