Submission #676450

#TimeUsernameProblemLanguageResultExecution timeMemory
676450penguin133Robots (IOI13_robots)C++17
100 / 100
1466 ms26300 KiB
#include "robots.h" #include <bits/stdc++.h> using namespace std; //#define int long long #define pi pair<int, int> #define pii pair<int, pi> #define fi first #define se second pi R[1000005], R2[1000005]; int vis[1000005]; int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { for(int i=1;i<=T;i++)R[i] = {W[i-1], S[i-1]}; sort(X, X+A); sort(Y, Y+B); for(int i=0;i<T;i++){ if(W[i] >= X[A-1] && S[i] >= Y[B-1])return -1; } int lo = 0, hi = T, ans = hi; sort(R+1, R+T+1); int in; while(lo <= hi){ int m = (lo + hi)/2; for(int i=1;i<=T;i++)vis[i] = 0; in = 1; priority_queue<int>pq; for(int i=0;i<A;i++){ while(in <= T && R[in].fi < X[i])pq.push(R[in].se), in++; for(int j=0;j<m;j++){ if(pq.empty())break; pq.pop(); } } while(in <= T)pq.push(R[in].se), in++; bool f = 1; for(int i=B-1;i>=0;i--){ if(!pq.empty() && pq.top() >= Y[i])f = 0; for(int j=0;j<m;j++){ if(pq.empty())break; pq.pop(); } } if(pq.empty() && f)ans = m, hi = m - 1; else lo = m + 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...