Top
No.1148 「土偶III」

しゃくとりは経験的にバグらせやすいので、できる限り避けたい。
deque と map でシミュレーションする。

#include <cstdio>
#include <deque>
#include <map>
using namespace std;

int main(void) {
  int N, W; scanf("%d%d", &N, &W);
  deque<int> deq;
  size_t maxi = 0;
  int acc = 0;
  map<int, int> cnt;
  for(int i=0; i<N; ++i) {
    int ai; scanf("%d", &ai);
    deq.push_back(ai);
    acc += ai;
    ++cnt[ai];
    while(W < acc || cnt[ai] > 1) {
      int popped = deq.front(); deq.pop_front();
      --cnt[popped];
      acc -= popped;
    }
    maxi = max(maxi, deq.size());
  }
  printf("%lu\n", maxi);
  return 0;
}
    

(ΦωΦ)<おしまい