# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1272427 | cl_lmc | Rice Hub (IOI11_ricehub) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#define inf 1e9+7
using namespace std;
int main() {
int n,le,k;
cin >> n >> le >> k;
int ans=0;
int l=1,r=n,mid;
vector<int>udon(n+1),psum(n+1,0);
for(int i=1; i<=n; i++){
cin >> udon[i];
// psum[i]=psum[i-1]+udon[i];
}
while(l<r){
mid=(l+r)/2;
int mi=inf, it;
for(int i=1; i<=n-mid+1; i++){
// cout << i << ' ' << mid << ' ' << udon[i+mid-1]-udon[i]+1 <<endl;
if(udon[i+mid-1]-udon[i]+1<mi){
mi=udon[i+mid-1]-udon[i]+1;
it=i;
}
}
double avg=0;
// cout << it << endl;
for(int i=it; i<=it+mid-1; i++){
avg+=udon[i];
}
avg/=mid;
int s1=0,s2=0;
for(int i=it; i<=it+mid-1; i++){
s1+=llabs(floor(avg)-udon[i]);
}
for(int i=it; i<=it+mid-1; i++){
s2+=llabs(floor(avg)-udon[i]);
}
if(s1>k&&s2>k){
r=mid;
}else{
l=mid+1;
ans=max(ans,mid);
}
}
cout << ans << '\n';
}