제출 #880556

#제출 시각아이디문제언어결과실행 시간메모리
880556AlphaMale06쌀 창고 (IOI11_ricehub)C++14
0 / 100
2 ms860 KiB
#include<bits/stdc++.h> #include "ricehub.h" using namespace std; using ll = long long; int besthub(int R, int L, int X[], long long B) { int c=B; int n=R; int a[n]; if(n==1)return 1; for(int i=0; i< n; i++)a[i]=X[i]; ll sum=0; ll pref[n+1]; ll suf[n+1]; suf[n]=0; pref[0]=0; for(int i=0; i< n; i++){ sum+=a[i]; pref[i+1]=sum; } for(int i=n-1; i>=0; i--){ suf[i]=pref[n]-pref[i]; } ll sufind=n; ll mx; ll s=n/2; ll cost=a[s]*s-pref[s]-a[s]*(n-s)+suf[s]; while(cost>c){ sufind--; s=sufind/2; cost=a[s]*(s+1)-pref[s+1]-a[s]*(n-s-1)+suf[s]-suf[sufind+1]; } mx=sufind; for(int i=1; i< n; i++){ cost=0; while(cost<=c && sufind<n){ s=(sufind+i)/2; cost=a[s]*(s-i+1)-pref[s+1]+pref[i]-a[s]*(sufind-s)+suf[s+1]-suf[sufind+1]; sufind++; } if(sufind==n && cost<=c){ mx=max(mx, sufind-i); break; } else{ sufind--; mx=max(mx, sufind-i); } } return mx; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...