Submission #237066

#TimeUsernameProblemLanguageResultExecution timeMemory
237066nicolaalexandraRice Hub (IOI11_ricehub)C++14
0 / 100
28 ms2560 KiB
#include <bits/stdc++.h>
#include "ricehub.h"
#define DIM 200010
using namespace std;

long long sp[DIM];

long long get_sum (int x, int y){
    if (x > y)
        return 0;

    long long val = sp[y];
    if (x > 0)
        val -= sp[x-1];
    return val;

}
int besthub (int n, int l, int v[], long long b){
    int i, maxi = 0;
    for (i=0;i<n;i++)
        sp[i] = sp[i-1] + v[i];

    for (i=0;i<n;i++){
        int st = 0, dr = i-1, sol = i;
        while (st <= dr){
            int mid = (st+dr)>>1;
            if (1LL*(i-mid)*v[i] - get_sum(mid,i-1) <= b){
                sol = mid;
                dr = mid-1;
            } else st = mid+1;
        }

        long long val = b - ( 1LL*(i-sol)*v[i] - get_sum(sol,i-1) );
        int nr = i-sol+1;

        /// vad cat pot sa ma mai duc in dreapta
        st = i+1, dr = n-1, sol = i;
        while (st <= dr){
            int mid = (st+dr)>>1;
            if (get_sum(i+1,mid) - v[i]*(mid-i) <= val){
                sol = mid;
                st = mid+1;
            } else dr = mid-1;
        }

        nr += sol - i;

        maxi = max (maxi,nr);

    }

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