PKU 1690 (Your)((Term)((Project)))

http://poj.org/problem?id=1690
余分なカッコを取り去る。

http://sharif.edu/~acmicpc/acmicpc99/index78.html
WAになって、自分ではおかしなケースが作り出せなかったで、ここからテストデータを持ってきてデバッグしてしまいました。

string in;
int pos;

bool expr(){
  bool ret=true;
  if(in[pos]=='('){
    int cpos=pos;
    ++pos;
    ret&=expr();
    in[cpos]=' ';
    in[pos]=' ';
  }
  ++pos;

  while(pos<in.size() && in[pos]!=')'){
    ret=false;
    bool bm=false;
    if(in[pos]=='-')bm=true;
    ++pos;
    if(in[pos]=='('){
      int cpos=pos;
      ++pos;
      if(expr() || !bm){
	in[cpos]=' ';
	in[pos]=' ';
      }
    }
    ++pos;
  }
  return ret;
}

main(){
  int t;
  cin>>t;
  cin.ignore();
  while(t--){
    string temp;
    getline(cin,temp);
    in="";
    rep(i,SZ(temp))if(temp[i]!=' ')in+=temp[i];
    pos=0;
    expr();
    rep(i,SZ(in))if(in[i]!=' ')cout<<in[i];
    cout<<endl;
  }
}