제출 #1317546

#제출 시각아이디문제언어결과실행 시간메모리
1317546nikaa123Robots (IOI13_robots)C++20
0 / 100
1 ms332 KiB
#include <bits/stdc++.h> #include "robots.h" using namespace std; int a, b, n; vector <pair<int,int>> v; int x[200005],y[200005]; bool check(int mid) { priority_queue <int, vector <int>, greater<int>> q; int cur = 0; for (int i = 0; i < a; i++) { while (cur < n && v[cur].first <= x[i]) { q.push(v[cur].second); cur++; } int cnt = mid; while (cnt-- && !q.empty()) { q.pop(); } } while (cur < n) { q.push(v[cur].second); cur++; } for (int i = 0; i < b; i++) { if (q.empty()) break; if (q.top() > y[i]) return false; int cnt = mid; while (cnt-- && !q.empty()) { q.pop(); } } if (!q.empty()) return false; 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 = 0; i < a; i++) { x[i] = X[i]; } for (int i = 0; i < b; i++) { y[i] = Y[i]; } for (int i = 0; i < n; i++) { v.emplace_back(make_pair(W[i],S[i])); } sort(v.begin(),v.end()); sort(x,x+a); sort(y,y+b,greater<int>()); int l = 0; int r = T; int ans = -1; while (l <= r) { int mid = (l+r)/2; if (check(mid)) { r = mid - 1; ans = mid; } else { l = mid + 1; } } return ans; }
#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...