日々精進

aikoと旅行とプログラミング

【AOJ 2340】Carpenters' Language

問題

Carpenters' Language | Aizu Online Judge

方針

  • 文法を見てみると, 実は挿入位置は関係なくてかっこの個数だけで判定できることが分かる.
  • 左括弧, 右括弧それぞれの個数を保持しておき, 同じの時はYes, そうでないときはNoを出力する.

コード

#include<iostream>

#define rep(i, n) REP(i, 0, n)
#define REP(i, a, n) for(int i = a ; i < (int)n ; i++)

using namespace std;

typedef long long ll;

signed main(){
  int q;
  ll p, n;
  char c;
  ll open, close;
  open = close = 0;
  cin >> q;
  rep(i, q){
    cin >> p >> c >> n;
    
    if(c == '('){
      open += n;
    }else{
      close += n;
    }
    
    if(open == close) cout << "Yes" << endl;
    else cout << "No" << endl;
  }
}