Submission #402520

#TimeUsernameProblemLanguageResultExecution timeMemory
402520LoboRice Hub (IOI11_ricehub)C++17
68 / 100
21 ms1484 KiB
#include <bits/stdc++.h>
#include <ricehub.h>
 
using namespace std;
 
const long long INFll = 1e18;
const int INFii = 1e9;
const long long mod = (long long) 1e9 + 7;
typedef long long ll;
typedef int ii;
typedef double dbl;
#define endl '\n'
#define sc second
#define fr first
#define mp make_pair
#define pb push_back
 
#define maxn 110000
//LEMBRAR DE MUDAR
 
ll ps[maxn];
 
int besthub(int R, int L, int X[], long long B){
  
    ps[0] = 0;
    for(ii i = R; i >= 1; i--) {
        X[i] = X[i-1];
    }
 
    for(ii i = 1; i <= R; i++) {
        ps[i] = ps[i-1] + X[i]; 
    }
 
    ii ans = 0;
    for(ii i = 1; i <= R; i++) {
        ii l = i;
        ii r = R;
        ii mid = (l+r)/2;
        ii best = i;
 
        while(l <= r) {
            ii m = (i+mid)/2;
            ll cost = X[m]*(m-i+1LL) - ps[m] + ps[i-1]  +  ps[mid] - ps[m] - X[m]*(mid-m);
 
            if(cost <= B) {
                best = mid;
                l = mid+1;
                mid = (l+r)/2;
            }
            else {
                r = mid-1;
                mid = (l+r)/2;
            }
        }
 
        ans = max(ans, best-i+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...