제출 #1138179

#제출 시각아이디문제언어결과실행 시간메모리
1138179MattNattFeczan쌀 창고 (IOI11_ricehub)C++20
100 / 100
9 ms1352 KiB
#include "ricehub.h"
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const ll Inf = 1e18;

int besthub(int n, int m, int B[], ll b){
  vector<ll>A(n+2);
  A[0] = -Inf, A[n+1] = Inf;
  for(int i=0;i<n;i++){
    A[i+1] = B[i];
  }
  ll s=0,p=-1,k=1,w=0;
  for(int i=1;i<=n;i++){
    int now = A[i];
    p++, k--;
    while(s > b){
      s -= A[i]-A[i-p], p--;
    }
    while(A[i+k+1]-A[i]+s <= b || A[i+k+1] - A[i] <= A[i] - A[i-p]){
      if(A[i+k+1]-A[i]+s <= b)
        s += A[i+k+1]-A[i], k++;
      else{
        s += A[i+k+1] - A[i] - A[i] + A[i-p], p--, k++;
      }
    }
    while(A[i] - A[i-p-1] + s <= b)
      s += A[i] - A[i-p-1], p++;
    w = max(w, p+k+1);
    // cout<<p<<" "<<k<<" "<<s<<"\n";
    s += (p - k + 1) * (A[i+1] - A[i]);
  }
  return w;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...