Submission #958095

#TimeUsernameProblemLanguageResultExecution timeMemory
958095d4xnRice Hub (IOI11_ricehub)C++17
100 / 100
13 ms3676 KiB
#include "ricehub.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long

int besthub(int R, int L, int X[], ll B)
{ 
  ll n = R;
  ll ans = 1;

  ll l = 0;
  ll r = 0;
  ll mid = 0;
  ll cost = 0;
  ll cntL = 1;
  ll cntR = 0;
  while (l < n) {
    while (r+1 < n) {
      ll prevCost = cost;
      ll prevMid = mid;
      ll prevCntL = cntL;
      ll prevCntR = cntR;

      r++;
      cntR++;
      cost += X[r]-X[mid];

      while (cntL < cntR) {
        ll sz = X[mid+1]-X[mid];
        cost += cntL*sz - cntR*sz;
      
        mid++;
        cntL++;
        cntR--;
      }

      if (cost > B) {
        r--;
        cost = prevCost;
        mid = prevMid;
        cntL = prevCntL;
        cntR = prevCntR;
        break;
      }
    }
    ans = max(ans, r-l+1);

    cost -= X[mid]-X[l];
    cntL--;
    l++;
  }

  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...