제출 #1248506

#제출 시각아이디문제언어결과실행 시간메모리
1248506AlmontherRice Hub (IOI11_ricehub)C++20
100 / 100
18 ms2376 KiB
#include<bits/stdc++.h> #define ll long long #define co cout<< using namespace std; // stuff int besthub(int R,int L,int X[],ll B){ int mx=0; ll pref[R+5]={},suff[R+5]={}; for(int i=1;i<=R;i++) pref[i]=pref[i-1]+X[i-1]; for(int i=R-1;i>=0;i--) suff[i]=suff[i+1]+X[i]; for(int i=0;i<R;i++){ int len_l=0,len_r=R; while(len_l<len_r){ int mid=(len_l+len_r+1)/2; int l=i-mid,r=i+mid; if(l<0||r>=R){ len_r=mid-1; continue; } ll sum=X[i]*(i-l+1)-(pref[i+1]-pref[l]); sum+=(suff[i]-suff[r+1])-X[i]*(r-i+1); if(sum<=B) len_l=mid; else len_r=mid-1; } mx=max(mx,len_l*2+1); if(i<R-1&&X[i+1]-X[i]<=B){ len_l=1,len_r=R; while(len_l<len_r){ int mid=(len_l+len_r+1)/2; int l=i-mid+1,r=i+mid; if(l<0||r>=R){ len_r=mid-1; continue; } ll sum=X[i]*(i-l+1)-(pref[i+1]-pref[l]); sum+=(suff[i]-suff[r+1])-X[i]*(r-i+1); if(sum<=B) len_l=mid; else len_r=mid-1; } mx=max(mx,len_l*2); } } 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...