Submission #1153014

#TimeUsernameProblemLanguageResultExecution timeMemory
1153014AlgorithmWarriorRice Hub (IOI11_ricehub)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h>
#define MAX 100005

using namespace std;

int v[MAX];
long long sp[MAX];
int r,l;
long long b;

void read()
{
    int i;
    for(i=1;i<=r;++i)
        sp[i]=v[i]+sp[i-1];
}

bool check(int ind,int nr)
{
    int half1=(nr+1)/2;
    long long used=1LL*half1*v[ind]-sp[ind]+sp[ind-half1];
    int half2=nr/2;
    used+=sp[ind+half2]-sp[ind]-1LL*half2*v[ind];
    return used<=b;
}

int bin_search(int ind)
{
    int left=1;
    int right=min(ind*2,(r-ind)*2+1)+1;
    while(right-left>1)
    {
        int mid=(left+right)/2;
        if(check(ind,mid))
            left=mid;
        else
            right=mid;
    }
    return left;
}

int find_answer()
{
    int i;
    int maxim=0;
    for(i=1;i<=r;++i)
        maxim=max(maxim,bin_search(i));
    return maxim;
}

int besthub(int R,int L,int X[],long long B){
  r=R;
  l=L;
  b=B;
  int i;
  for(i=1;i<=r;++i)
      v[i]=X[i-1];
  return find_answer();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...