Submission #333017

#TimeUsernameProblemLanguageResultExecution timeMemory
333017CantfindmeRobots (IOI13_robots)C++17
90 / 100
1775 ms24136 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long typedef pair<int,int> pi; #define f first #define s second #define FAST ios_base::sync_with_stdio(0); cin.tie(0); #include "robots.h" vector <pi> toys; int n; int weak[50010]; int small[50010]; int now,nos; int query(int x) { priority_queue <int> pq; int cur = 0; for (int i = 0;i<now;i++) { while (cur < n and toys[cur].f < weak[i]) { cur++; pq.push(toys[cur].s); } for (int xd = 0; xd < x; xd++) { if (pq.empty()) break; pq.pop(); } } while (cur < n) { pq.push(toys[cur].s); cur++; } for (int i = nos-1;i>=0;i--) { if (pq.empty()) return 1; else if (pq.top() >= small[i]) return 0; for (int xd = 0; xd < x; xd++) { if (pq.empty() or pq.top() >= small[i]) break; pq.pop(); } } if (pq.empty()) return 1; else return 0; } int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { n = T; now = A; nos = B; for (int i =0;i<A;i++) weak[i] = X[i]; for (int i =0;i<B;i++) small[i] = Y[i]; sort(weak,weak+A); sort(small,small+B); for (int i =0;i<n;i++) { toys.push_back(pi(W[i],S[i])); } sort(toys.begin(),toys.end()); int high = T+1; int low = 0; while (high - low > 1) { int mid = (high+low)/2; //cout << low << " " << mid << " " << high << "\n"; if (query(mid)) high = mid; else low = mid; } if (high == T+1) return -1; else return high; }
#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...