Submission #136420

#TimeUsernameProblemLanguageResultExecution timeMemory
136420junodeveloperRice Hub (IOI11_ricehub)C++14
100 / 100
29 ms2424 KiB
//#include "ricehub.h" #include <bits/stdc++.h> using namespace std; int* a; int n,l; long long b, T[2][100010], S[2]; vector<int> vx; bool f(int x) { if(x==1)return true; int i; long long s1=0, s2=0, c=x/2-(x-x/2); for(i=0;i<x/2;i++) s1+=vx[a[i]]; for(i=x/2;i<x;i++) s2+=vx[a[i]]; long long r=vx[a[x/2]]*c-s1+s2; for(i=x;i<n;i++) { s1-=vx[a[i-x]], s2+=vx[a[i]]; s2-=vx[a[i-x+x/2]], s1+=vx[a[i-x+x/2]]; r=min(r,vx[a[i-x+1+x/2]]*c-s1+s2); } return r<=b; } int besthub(int R, int L, int X[], long long B) { vx.clear(); n=R,l=L,b=B,a=X; for(int i=0;i<R;i++) vx.push_back(X[i]); sort(vx.begin(),vx.end()); vx.erase(unique(vx.begin(),vx.end()),vx.end()); for(int i=0;i<R;i++) a[i]=lower_bound(vx.begin(),vx.end(),a[i])-vx.begin(); int lo=0,hi=R; while(lo<hi){ int mid=(lo+hi+1)/2; if(f(mid)) lo=mid; else hi=mid-1; } return lo; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...