PKU 1013 Counterfeit Dollar

http://poj.org/problem?id=1013
重さを測った結果から重さの違うものと、それが軽いのか重いのか当てるという問題。

添字ミス、スペルミス、考え不足でいろいろとWAった。
ひどい。

string a[3],b[3],c[3];

main(){
  int n;
  cin>>n;
  while(n--){
    rep(i,3)cin>>a[i]>>b[i]>>c[i];

    char ans;
    string out;
    for(int i='A';i<='L';i++){
      rep(j,2){
        bool ok=true;
        rep(k,3){
          bool app=false;
          rep(l,SZ(a[k])){
            if(a[k][l]==i){
              app=true;
              if(j==0 && c[k][0]!='d')ok=false;
              else if(j==1 && c[k][0]!='u')ok=false;
            }else if(b[k][l]==i){
              app=true;
              if(j==0 && c[k][0]!='u')ok=false;
              else if(j==1 && c[k][0]!='d')ok=false;
            }
          }
          if(!app && c[k][0]!='e')ok=false;
          if(app && c[k][0]=='e')ok=false;
        }
        if(ok){
          out=j?"heavy.":"light.";
          ans=i;
          break;
        }
      }
      if(SZ(out))break;
    }
    cout<<ans<<" is the counterfeit coin and it is "<<out<<endl;
  }
}