Submission #1252020

#TimeUsernameProblemLanguageResultExecution timeMemory
1252020kitsuneRice Hub (IOI11_ricehub)C++20
100 / 100
8 ms1864 KiB
#include "ricehub.h"
#include <bits/stdc++.h>
/// kitsune
using namespace std;

#define fi first
#define se second
#define mp make_pair
//#define int long long
#define sz(x) (int)(x).size()
#define all(x) (x).begin(), (x).end()
#define rep(i, l, r) for (int i = (int)(l); i <= (int)(r); i++)
#define per(i, r, l) for (int i = (int)(r); i >= (int)(l); i--)

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

template<typename _Tp> bool minimize(_Tp& __a, const _Tp& __b) { if (__a > __b) { __a = __b; return true; } return false; }
template<typename _Tp> bool maximize(_Tp& __a, const _Tp& __b) { if (__a < __b) { __a = __b; return true; } return false; }

const int siz = 5e6 + 2;
const int SIZ = 1e6 + 2;
const int mod = 1e9 + 7;
const int maxx = 2e9;
const ll MAXX = 1e18;
const string file = "1";

int a[siz];
ll psum[siz];

ll eval(int l, int r) {
    int m = (l + r) / 2;

    ll lhs = (m - l + 1) * (ll)a[m] - (psum[m] - psum[l - 1]);
    ll rhs = (psum[r] - psum[m]) - (r - m) * (ll)a[m];

    return lhs + rhs;
}

int besthub(int n, int l, int x[], long long v)
{
    rep (i, 1, n) {
        a[i] = x[i - 1];

        psum[i] = psum[i - 1] + a[i];
    }

    int ans = 0;
    for (int l = 1, r = 1; r <= n; r++) {
        while (eval(l, r) > v) {
            l++;
        }

        maximize(ans, r - l + 1);
    }

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