【AtCoder】ABC 442 B - Music Player

B - Music Player
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
AtCoder
実行時間制限: 2 sec / メモリ制限: 1024 MiB / Difficulty: 27 / NoviSteps: 6Q / 配点: 200 点
問題概要
高橋君は音楽プレイヤーを持っている。 はじめ、音量は であり、曲は停止中である。
これから、 回の操作を順に行う。 回目の操作は整数 によって表され、操作の内容は以下の通り。
- : 音量を 上げる。
- : 現在の音量が 以上であれば音量を 下げ、 であれば何もしない。
- : 曲が停止中であれば曲を再生し、曲が再生中であれば曲を停止する。
に対して、以下の問題を解け。
- 回目の操作を終えた直後に音量 以上で音楽が再生されているか判定せよ。
制約
- 入力される値はすべて整数
考察
- プレイヤーの再生状態と音量を変数で管理し、 回の操作をシミュレーションしていけばよい。
実装例
CPP
1.#include <bits/stdc++.h>2.using namespace std;3. 4.// ======================================== //5. 6.int main()7.{8. int Q;9. cin >> Q;10. 11. bool is_playing = false;12. int volume = 0;13. while (Q--)14. {15. int A;16. cin >> A;17. 18. if (A == 1)19. {20. volume++;21. }22. else if (A == 2)23. {24. volume = max(volume - 1, 0);25. }26. else if (A == 3)27. {28. is_playing = !is_playing;29. }30. 31. if (is_playing && volume >= 3)32. cout << "Yes" << endl;33. else34. cout << "No" << endl;35. }36. 37. return 0;38.}https://atcoder.jp/contests/abc442/submissions/72682529
atcoder.jp
実装時間: 5 分以内
コメント
いい感じのシミュレーション問題だった。





