AOJ > vol24 > 2490

AOJ - 2490 : Parentheses

問題概要

日本語文があるので省略。
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2490

解法

SRM Div1 Easy的な難易度。
levelというint型変数を置く。これは現在、開始カッコをいくつ開いているかを意味するものとする。

  • 開始カッコがx個現れれば、level += x
  • 終了カッコがx個現れれば、level -= x

これを入力の各クエリについて行う。
もし、途中でlevelの値がマイナスの値になるようなことがあれば、終了カッコを閉じすぎているということがわかるため、"NO"。
また、クエリを全て処理し終わった時点で、levelが0でなければ、終了カッコを全て閉じられていないため、"NO"。
それ以外は"YES"となる。

プログラム

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(){
  5. int T;
  6.  
  7. while(cin >> T){
  8. int level = 0;
  9. bool yesFlg = true;
  10.  
  11. while(T--){
  12. char ch;
  13. int tim;
  14. cin >> ch >> tim;
  15.  
  16. if(!yesFlg) continue;
  17. if(ch == '(') level += tim;
  18. else level -= tim;
  19.  
  20. if(level < 0) yesFlg = false;
  21. }
  22.  
  23. if(level != 0) yesFlg = false;
  24.  
  25. cout << (yesFlg ? "YES" : "NO") << endl;
  26. }
  27. }
最終更新:2013年11月04日 15:41