제출 #906494

#제출 시각아이디문제언어결과실행 시간메모리
906494Mathias쌀 창고 (IOI11_ricehub)C++14
100 / 100
14 ms3676 KiB
#include "ricehub.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int MAXN = 1e5+7;
ll t[MAXN], prefix[MAXN];
ll ra,rb,sa,sb,j,m,s;
bool f(int x, long long B,int R){
  for(int i=0;i<=R-x;i++){
      j=i+x-1;
      m=(i+j)/2;
      if(i) sb=prefix[m-1]-prefix[i-1];
      else sb=prefix[m-1];
      sa=prefix[j]-prefix[m];
      rb=t[m]*(m-i)-sb;
      ra=sa-t[m]*(j-m);
       if(ra+rb<=B) return true;
  }
  return false;
}
int besthub(int R, int L, int X[], long long B){
    int p=0,k=R;
    prefix[0]=X[0];
    t[0]=X[0];
    for(int i=1;i<R;i++){
      t[i]=X[i];
      prefix[i]=prefix[i-1]+X[i];
    }
    while(p<k){
        s=(p+k+1)/2;
        //cout<<p<<' '<<s<<' '<<k<<'\n';
        if(f(s,B,R)){
            p=s;
        }
        else k=s-1;
    }
    return p;
}/*
int main(){
    int n1,n2,b;
    int X[100];
    cin>>n1>>n2;
    for(int i=0;i<n1;i++) cin>>X[i];
    cin>>b;
    cout<<besthub(n1,n2,X,b)<<'\n';
}*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...