Submission #1276129

#TimeUsernameProblemLanguageResultExecution timeMemory
1276129k12_khoiRice Hub (IOI11_ricehub)C++17
100 / 100
9 ms1612 KiB
#include "ricehub.h"

#include <bits/stdc++.h>
using namespace std;

#define ll long long

const int N=1e5+5;

int n,x,l,r,mid; ll limit;
int a[N]; ll pre[N];

ll C(int a[],int l,int r,int mid)
{
    return (pre[r+1]-pre[mid+1])-1LL*(r-mid)*a[mid]+1LL*a[mid]*(mid-l+1)-(pre[mid+1]-pre[l]);
}

int besthub(int n,int x,int a[],ll limit)
{
    int res=0;

    pre[0]=0;
    for (int i=1;i<=n;i++)
    pre[i]=pre[i-1]+a[i-1];

    for (int i=0;i<n;i++)
    {
        l=(res+1)/2;
        r=min(i,n-1-i);

        while (l<=r)
        {
            mid=(l+r)/2;

            if (C(a,i-mid,i+mid,i)<=limit)
            {
                res=mid*2+1;
                l=mid+1;
            }
            else r=mid-1;
        }

        l=res/2;
        r=min(i,n-2-i);

        while (l<=r)
        {
            mid=(l+r)/2;
            if (C(a,i-mid,i+mid+1,i)<=limit)
            {
                res=mid*2+2;
                l=mid+1;
            }
            else r=mid-1;
        }
    }

    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...