Submission #16447

#TimeUsernameProblemLanguageResultExecution timeMemory
16447chan492811Rice Hub (IOI11_ricehub)C++98
17 / 100
33 ms5772 KiB
#include "ricehub.h" #include <cstdlib> #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){ if(now+arr[right]-arr[0]<=b)now+=arr[right++]-arr[0]; else break; }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(abs(arr[right-1]-arr[i])>=abs(arr[i]-arr[left])){ now-=abs(arr[right-1]-arr[i]); right--; }else{ now-=abs(arr[i]-arr[left++]); } }while(now<=b){ if(left>0 && right<n){ if((abs(arr[i]-arr[left-1])>abs(arr[right]-arr[i])) && (abs(arr[right]-arr[i])<=b-now)){ now+=abs(arr[right]-arr[i]); right++; }else if((abs(arr[i]-arr[left-1])<=abs(arr[right]-arr[i])) && (abs(arr[i]-arr[left-1])<=b-now)){ now+=abs(arr[i]-arr[left-1]); left--; }else{ break; } }else if(left==0 && right<n){ if(abs(arr[right]-arr[i])<=b-now){ now+=abs(arr[right]-arr[i]); right++; }else break; }else if(right==n && left!=0){ if(abs(arr[i]-arr[left-1])<=b-now){ now+=abs(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...