日本語文があるので省略。
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2490
SRM Div1 Easy的な難易度。
levelというint型変数を置く。これは現在、開始カッコをいくつ開いているかを意味するものとする。
これを入力の各クエリについて行う。
もし、途中でlevelの値がマイナスの値になるようなことがあれば、終了カッコを閉じすぎているということがわかるため、"NO"。
また、クエリを全て処理し終わった時点で、levelが0でなければ、終了カッコを全て閉じられていないため、"NO"。
それ以外は"YES"となる。
- #include <iostream>
- using namespace std;
-
- int main(){
- int T;
-
- while(cin >> T){
- int level = 0;
- bool yesFlg = true;
-
- while(T--){
- char ch;
- int tim;
- cin >> ch >> tim;
-
- if(!yesFlg) continue;
- if(ch == '(') level += tim;
- else level -= tim;
-
- if(level < 0) yesFlg = false;
- }
-
- if(level != 0) yesFlg = false;
-
- cout << (yesFlg ? "YES" : "NO") << endl;
- }
- }