Submission #965672

#TimeUsernameProblemLanguageResultExecution timeMemory
965672AmrRobots (IOI13_robots)C++17
39 / 100
3094 ms25424 KiB
#include "robots.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; #define F first #define S second #define sz size() #define all(x) (x).begin(),(x).end() const int N = 2e5+2; vector<pair<ll,ll> > v; ll n1, n2 , n; ll xx[N],yy[N]; bool cmp(pair<ll,ll> a, pair<ll,ll> b) { return a.S > b.S; } bool cmp2(pair<ll,ll> a, pair<ll,ll> b) { return a.S < b.S; } bool good(ll x) { sort(all(v)); ll lst = 0; for(int i = 0; i < n1; i++) { pair<ll,ll> p = {xx[i],0}; ll pos = (lower_bound(v.begin(),v.end(),p)-v.begin()); pos--; if(pos<lst) continue; //reverse(v.begin()+lst,v.begin()+pos+1); sort(v.begin()+lst,v.begin()+pos+1,cmp); lst = max(lst,min(pos+1,lst+x)); if(lst!=pos+1) sort(v.begin()+lst,v.begin()+pos+1); // cout << pos << " "; } if(lst!=n) sort(v.begin()+lst,v.begin()+n,cmp2); for(int i = 0; i < n2; i++) { ll cnt = 0; while(cnt<x&&lst<n&&v[lst].S<yy[i]) cnt++,lst++; } return (lst==n); } int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { n = T , n1 = A , n2 = B; v.resize(n); for(int i = 0; i < A; i++) xx[i] = X[i]; for(int i = 0; i < B; i++) yy[i] = Y[i]; for(int i = 0; i < n; i++) v[i] = {W[i],S[i]}; sort(xx,xx+n1); sort(yy,yy+n2); ll l = 0, r = 1; while(!good(r)&&r<5e6) r*=2; while(l+1<r) { ll mid = (l+r)/2; if(good(mid)) r = mid; else l = mid; } if(r>5e6) return -1; else return r; }
#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...