Submission #1352412

#TimeUsernameProblemLanguageResultExecution timeMemory
1352412fatelessRice Hub (IOI11_ricehub)C++20
100 / 100
6 ms1548 KiB
#include "ricehub.h"
#include <ext/pb_ds/assoc_container.hpp>
#include <bits/stdc++.h>
using namespace __gnu_pbds;
using namespace std;
 
#define speedup cin.tie(0)->sync_with_stdio(0);
#define bitcount __builtin_popcount
#define all(x) begin(x), end(x)
#define pb push_back
#define vc vector

using ll = long long;
using pii = array<int, 2>;

mt19937 mt(chrono::steady_clock().now().time_since_epoch().count());
inline bool chmin(int &a, int b) {if (a > b) {a = b; return 1;} return 0;}
inline bool chmax(int &a, int b) {if (a < b) {a = b; return 1;} return 0;}

int besthub(int n,int m,int x[],ll b){
    vc<ll> pf(n + 1);
    for (int i = 1; i <= n; i++) pf[i] = pf[i - 1] + x[i - 1];

    auto good = [&](int l, int r) -> bool {
        int mid = (l + r) >> 1;
        ll ls = 1LL * x[mid - 1] * (mid - l + 1) - (pf[mid] - pf[l - 1]);
        ll rs = (pf[r] - pf[mid]) - 1LL * x[mid - 1] * (r - mid);
        return (ls + rs <= b);
    };

    int ans = 1, r = 1;
    for (int l = 1; l <= n; l++) {
        r = max(r, l);
        while (r < n && good(l, r + 1)) r++;
        ans = max(ans, r - l + 1);
    }
    return ans;
}
/*
5 20 6
1
2
10
12
14
3
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...