Submission #584691

#TimeUsernameProblemLanguageResultExecution timeMemory
584691KanaifuRice Hub (IOI11_ricehub)C++14
100 / 100
11 ms1612 KiB
#include <bits/stdc++.h>
#include "ricehub.h"

using namespace std;

int besthub(int R, int L, int X[], long long B)
{
    long long prefix[100001];
    prefix[0] = X[0];
    if (R == 0)
    {
        return 0;
    }
    for (int i=1; i<R; i++)
    {
        long long add = X[i];
        prefix[i] = prefix[i-1] + add;
    }
    long long cost = 0;
    int leng = 1;
    long long l = 0, r = 1;
    while (r < R)
    {
        long long med = (l+r)/2;
        long long val = X[med];
        cost = 0;
        if (med != l)
        {
            if (l==0)
            {
                cost += (val)*(med-l)- prefix[med-1];
            }
            else
            {
                cost += (val)*(med-l)- (prefix[med-1]-prefix[l-1]);
            }
        }
        if (med != r)
        {
            cost += prefix[r] - prefix[med] - (r-med)*(val);
        }
        if (cost <= B)
        {
            leng = max(leng, (int)(r - l + 1));
            r++;
        }
        else
        {
            l++;
            r++;
        }
    }
    return leng;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...