Submission #1202250

#TimeUsernameProblemLanguageResultExecution timeMemory
1202250adiyerRice Hub (IOI11_ricehub)C++20
100 / 100
335 ms21108 KiB
#pragma once
#pragma GCC optimize("g", on)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")

#include <bits/stdc++.h>

#define all(x) x.begin(), x.end()
#define len(s) (ll) s.size()
#define pb push_back
#define F first 
#define S second 

using namespace std;

typedef long long ll;
typedef long double ld;

const int N = 1e5 + 3; 
const int MAX = 2e4 + 11;
const int mod = 1e9 + 7;
const ll inf = 1e18;

ll n, lmt, ans;
ll a[N], p[N];

pair < ll, ll > f(ll i, ll x){
    ll L, R, l, r;
    l = 0, r = i;
    while(r - l > 1){
        ll md = (l + r) / 2;
        if(a[md] >= a[i] - x) r = md;
        else l = md;
    } 
    L = r;
    l = i, r = n + 1;
    while(r - l > 1){
        ll md = (l + r) / 2;
        if(a[md] <= a[i] + x) l = md;
        else r = md;
    }
    R = l;
    return {(a[i] * (i - L + 1) - (p[i] - p[L - 1])) + ((p[R] - p[i]) - a[i] * (R - i)), R - L + 1};
}

int besthub(int R, int L, int X[], long long B){
    n = R, lmt = B;
    map < ll, ll > cnt;
    for(ll i = 1; i <= n; i++) a[i] = X[i - 1], p[i] = p[i - 1] + a[i], cnt[a[i]]++;
    for(ll i = 1; i <= n; i++){
        ll l = 0, r = L + 1;
        while(r - l > 1){
            ll md = (l + r) / 2;
            if(f(i, md).F <= lmt) l = md;
            else r = md;
        }
        ll c = cnt[a[i] - r] + cnt[a[i] + r];
        // cout << f(i, l).S << ' ' << (lmt - f(i, l).F) << '\n';
        ans = max(ans, f(i, l).S + min(c, (lmt - f(i, l).F) / r));
    }
    return ans;
}

Compilation message (stderr)

ricehub.cpp:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
ricehub.cpp:2:27: warning: '#pragma GCC optimize (string [,string]...)' does not have a final ')' [-Wpragmas]
    2 | #pragma GCC optimize("g", on)
      |                           ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...