実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 19
問題概要
押すと飴を1つもらえるボタンがあるが、前回飴をもらってからの経過時間が 秒未満である場合はもらえない。これから 秒後にボタンを押すとき、何個の飴をもらうことができるか求めよ。
制約
- 入力は全て整数。
考察
実際に1回ずつボタンを押していく様子をシミュレーションしていく。前回飴をもらった時刻を としておき (初期値は ) 、 回目にボタンを押すときについて、
- のとき、無条件に飴をもらえる。 とする。
- のとき、 ならば飴をもらえる。 とする。
- それ以外のときは飴はもらえない。
とすればよい。
コード
#include <bits/stdc++.h> using namespace std; #define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++) // ======================================== // int main() { int N, C; cin >> N >> C; vector<int> T(N); rep(i, 0, N) cin >> T[i]; int ans = 0, time = 0; rep(i, 0, N) { if (i == 0) { ans++; time = T[i]; } else if (T[i] - time >= C) { ans++; time = T[i]; } } cout << ans << endl; }
実装時間: 5分以内