Submission #1192811

#TimeUsernameProblemLanguageResultExecution timeMemory
1192811Hamed_GhaffariRice Hub (IOI11_ricehub)C++20
100 / 100
8 ms1096 KiB
#include "ricehub.h"
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

#define SZ(x) int(x.size())

int besthub(int R, int L, int X[], ll B) {
  deque<int> dql, dqr;
  ll suml=0, sumr=0;
  auto fix = [&]() -> void {
    while(SZ(dqr)>SZ(dql)) {
      sumr -= dqr.front();
      dql.push_back(dqr.front());
      suml += dqr.front();
      dqr.pop_front();
    }
    while(SZ(dql)-1>=SZ(dqr)+1) {
      suml -= dql.back();
      dqr.push_front(dql.back());
      sumr += dql.back();
      dql.pop_back();
    }
  };
  auto ins = [&](int x) -> void {
    dqr.push_back(x);
    sumr += x;
    fix();
  };
  auto er = [&]() -> void { 
    suml -= dql.front();
    dql.pop_front();
    fix();
  };
  auto cost = [&]() -> ll {
    return 1ll*SZ(dql)*dql.back() - suml + (sumr - 1ll*SZ(dqr)*dql.back());
  };
  int ans = 0;
  int l=0;
  for(int r=0; r<R; r++) {
    ins(X[r]);
    while(cost()>B) er(), l++;
    ans = max(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...