PKU 2996 Help Me with the Game
http://poj.org/problem?id=2996
チェスボードを読み取ってそれぞれの駒の場所を出力するというような問題。
書くだけ。
いろいろと楽をしようと思ったけれど、あまり簡潔に書けてないです。
main(){ map<char,set<PI> >ans; rep(i,17){ string in; cin>>in; rep(j,SZ(in)) if(isalpha(in[j])){ if(isupper(in[j]))ans[in[j]].insert(mp(7-(i-1)/2+1,(j-2)/4+1)); else ans[in[j]].insert(mp((i-1)/2-8,(j-2)/4+1)); } } string out="KQRBNP"; rep(re,2){ if(!re)cout<<"White: "; else cout<<"Black: "; rep(i,SZ(out)){ switch(toupper(out[i])){ case 'R': case 'B': FOR(siter,ans[out[i]])cout<<','<<(char)toupper(out[i])<<char(siter->S+'a'-1)<<abs(siter->F); break; case 'P': FOR(siter,ans[out[i]])cout<<','<<char(siter->S+'a'-1)<<abs(siter->F); break; case 'K': FOR(siter,ans[out[i]])cout<<(char)toupper(out[i])<<char(siter->S+'a'-1)<<abs(siter->F); break; default: FOR(siter,ans[out[i]])cout<<','<<(char)toupper(out[i])<<char(siter->S+'a'-1)<<abs(siter->F); break; } out[i]=tolower(out[i]); } cout<<endl; } }