제출 #361446

#제출 시각아이디문제언어결과실행 시간메모리
361446NachoLibre로봇 (IOI13_robots)C++17
100 / 100
1905 ms19520 KiB
#include <bits/stdc++.h> using namespace std; #ifndef wambule #include "robots.h" #else #endif const int N = 1000006; const int MXX = 2e9; int ga, gb, gn, *x, *y; pair<int, int> o[N]; bool C(int z) { priority_queue<int> s; int ox = 0, az = 0; for(int i = 0; i < ga; ++i) { while(o[ox].first < x[i]) { // cout << "[+] " << o[ox].second << endl; s.push(o[ox].second); ++ox; } az = z; while(s.size() && az) { // cout << "[-] " << s.top() << endl; s.pop(); --az; } } for(int i = ox; i < gn; ++i) { s.push(o[i].second); } for(int i = gb - 1; i >= 0; --i) { az = z; while(s.size() && az) { if(s.top() >= y[i]) return 0; s.pop(); --az; } } if(s.size()) return 0; return 1; } int putaway(int a, int b, int n, int _x[], int _y[], int _w[], int _s[]) { ga = a; gb = b; gn = n; x = _x; y = _y; sort(x, x + a); sort(y, y + b); for(int i = 0; i < n; ++i) { o[i] = {_w[i], _s[i]}; } o[n] = {MXX, 0}; sort(o, o + n); if(!C(n)) return -1; int l = 1, r = n; while(l < r) { int m = (l + r) / 2; if(C(m)) { r = m; } else { l = m + 1; } } return l; } #ifdef wambule int main() { ios::sync_with_stdio(0); cin.tie(0); 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) << endl; return 0; } #endif
#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...