제출 #234065

#제출 시각아이디문제언어결과실행 시간메모리
234065DanerZein쌀 창고 (IOI11_ricehub)C++14
58 / 100
38 ms1912 KiB
#include "ricehub.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; long long ma=-1; int besthub(int R, int L, int X[], long long B){ /* if(R<=500){ ma=-1; for(int i=0;i<R;i++){ for(int j=i;j<R;j++){ // cout<<i<<" "<<j<<endl; vector<int>rp; for(int k=i;k<=j;k++){ rp.push_back(X[k]); } int mi=(i+j)/2; mi=X[mi]; // cout<<i<<" "<<j<<endl; bool sw=0; long long b=B; for(int k=0;k<rp.size();k++){ b-=abs(mi-rp[k]); if(b<0){ sw=1; break; } //c++; } if(sw==0){ // cout<<i<<" "<<j<<" "<<rp.size()<<endl; long long tam=rp.size(); ma=max(ma,tam); } } } return ma; } else{*/ vector<ll>T; T.push_back(0); for(int i=0;i<R;i++){ T.push_back(X[i]+T[T.size()-1]); } for(int i=0;i<R;i++){ int l,r; l=i+1; r=R; while(true){ ll mi=l+(r-l)/2; //cout<<l<<" "<<r<<" "<<ma<<" "<<mi<<endl; if(l>r) break; ll p=(i+mi)/2; if((p-i)*X[p]-(T[p]-T[i])+(T[mi+1]-T[p+1])-(mi-p)*X[p]<=B){ ma=max(ma,(ll)(mi-i)+1); if(l==mi) break; l=mi; } else{ if(r==mi) break; r=mi; } } } return ma; //} } /* #define MAX_R 1000000 static int R, L; static long long B; static int X[MAX_R]; static int solution; inline void my_assert(int e) {if (!e) abort();} static void read_input() { int i; my_assert(3==scanf("%d %d %lld",&R,&L,&B)); for(i=0; i<R; i++) my_assert(1==scanf("%d",&X[i])); my_assert(1==scanf("%d",&solution)); } int main() { int ans; read_input(); ans = besthub(R,L,X,B); if(ans==solution) printf("Correct.\n"); else printf("Incorrect. Returned %d instead of %d.\n",ans,solution); return 0; } */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...