Submission #16438

#TimeUsernameProblemLanguageResultExecution timeMemory
16438chan492811Rice Hub (IOI11_ricehub)C++98
0 / 100
4 ms5772 KiB
#include "ricehub.h" #include <algorithm> using namespace std; long long n,m,left,right; long long b,l,max1,now; long long arr[100010]; int besthub(int R, int L, int X[], long long B) { long long i; long long temp; n=(long long)R; l=(long long)L; b=B; for(i=0;i<n;i++){ arr[i]=(long long)X[i]; } while(right<n && now<=b){ now+=arr[right++]-arr[0]; }max1=max(max1,right-left); for(i=1;i<n;i++){ now+=(i-left)*(arr[i]-arr[i-1]); now-=(right-i)*(arr[i]-arr[i-1]); while(now>b){ if((arr[right-1]-arr[i])>(arr[i]-arr[left])){ now-=arr[right-1]-arr[i]; right--; }else{ now-=arr[left++]; } }while(now<=b){ if(left>0 && right<n){ if(arr[i]-arr[left-1]>arr[right]-arr[i] && arr[right]-arr[i]<=b-now){ now+=arr[right]-arr[i]; right++; }else if(arr[i]-arr[left-1]<arr[right]-arr[i] && arr[i]-arr[left-1]<=b-now){ now+=arr[i]-arr[left-1]; left--; }else{ break; } }else if(left==0 && right<n){ if(arr[right]-arr[i]<=b-now){ now+=arr[right]-arr[i]; right++; }else break; }else if(right==n && left!=0){ if(arr[i]-arr[left-1]<=b-now){ now+=arr[i]-arr[left-1]; left--; }else break; }else break; } max1=max(max1,right-left); } return (int)max1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...