「前回の値」を保持しながらシミュレーションする系
問題概要
ボタンを押すと、1 個の飴がもらえるが、前回飴をもらってから 秒間はもらえない。
高橋君は 回ボタンを押した。それぞれ 秒後に押した(これらは単調増加)。
何回飴をもらえたか?
考えたこと
「前回飴をもらった時刻」を表す変数 prev
を用意して、それを管理しながらシミュレーションを回していこう。初期値が問題だが、たとえば
prev = -C
などとしておけばよい。こうしておけば、最初にボタンを押したときに確実に飴が出ることが保証される。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N, C, T; cin >> N >> C; int res = 0, prev = -C; // prev: 前回の食べた時刻 for (int i = 0; i < N; i++) { cin >> T; if (T - prev >= C) { res++; prev = T; } } cout << res << endl; }