Official
B - Music Player Editorial
by
B - Music Player Editorial
by
cn449
現在の音量を表す変数と曲が再生中であるかを表す変数の \(2\) つの変数を管理しながら操作をしていけばよいです。
\(x\) を現在の音量を表す変数、\(y\) を曲が停止中ならば \(y = 0\)、曲が再生中ならば \(y = 1\) であるような変数とすると、各操作に対して \(x, y\) は以下のように変化します。
- \(A_i = 1\) のとき、\(x\) を \(x + 1\) で置き換える。
- \(A_i = 2\) のとき、\(x > 0\) ならば \(x\) を \(x - 1\) で置き換える。そうでないならば何もしない。
- \(A_i = 3\) のとき、\(y\) を \(1-y\) で置き換える。
\(y\) を \(1-y\) で置き換える操作は \(0\) と \(1\) を切り替える操作になっていることに注意してください。
操作を終えたとき、\(x \geq 3\) かつ \(y = 1\) ならば答えは Yes、そうでないならば答えは No です。
実装例
#include <bits/stdc++.h>
using namespace std;
int main() {
int x = 0, y = 0;
int q;
cin >> q;
while (q--) {
int a;
cin >> a;
if (a == 1) x++;
else if (a == 2 && x > 0) x--;
else if (a == 3) y = 1 - y;
if (x >= 3 && y == 1) cout << "Yes\n";
else cout << "No\n";
}
}
posted:
last update: