제출 #104099

#제출 시각아이디문제언어결과실행 시간메모리
104099wilwxk쌀 창고 (IOI11_ricehub)C++11
100 / 100
26 ms2964 KiB
#include "ricehub.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN=1e5+3; int v[MAXN]; ll ps[MAXN]; int n, m; int ini, fim; ll x; ll soma(int ini, int fim) { if(fim<ini) return 0; return ps[fim]- (ini==0 ? 0 : ps[ini-1]); } bool testa(int k) { for(int fim=k-1; fim<n; fim++) { int ini=fim-k+1; int mid=(ini+fim)/2; ll aa=v[mid]; aa*=(mid-ini+1); aa-=soma(ini, mid); ll bb=soma(mid+1, fim); if(mid<fim) bb-=v[mid]*(ll)(fim-mid); // printf("test %d %d [%d] > m %d > %lld %lld > %lld\n", ini, fim, k, mid, aa, bb, aa+bb); if(aa+bb<=x) return 1; } return 0; } int besthub(int N, int M, int V[], ll X) { n=N; m=M; x=X; for(int i=0; i<n; i++) v[i]=V[i]; ps[0]=v[0]; for(int i=1; i<n; i++) ps[i]=ps[i-1]+v[i]; int tam=0; for(int i=n; i>0; i/=2) while(tam+i<=n&&testa(tam+i)) tam+=i; return tam; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...