Codeforces Round #44 (Div 2) B. Coins
問題概要
それぞれ重さの異なる3枚のコインA,B,Cがある。
これらの重さの関係について3つの不等式が与えられる。
この不等式からコインの重さが一意に定まるならその順を、
そうでなければ"Impossible"を出力せよ。
解法
コインの重さの関係は6通りであるので、next_permutationで全通り試してみる。
ソースコード
string in[3]; void run() { rep(i,3)getline(cin,in[i]); int ord[]={0,1,2},ans[3],f=0; do { rep(i,3) { if(in[i][1]=='<') { if(ord[in[i][0]-'A']>ord[in[i][2]-'A'])goto NEXT; } else { if(ord[in[i][0]-'A']<ord[in[i][2]-'A'])goto NEXT; } } f++; rep(j,3)ans[j]=ord[j]; NEXT:; } while(next_permutation(ord,ord+3)); if(f!=1)cout<<"Impossible"<<endl; else { pi p[3]; rep(i,3)p[i]=mp(ans[i],i); sort(p,p+3); rep(i,3)cout<<(char)('A'+p[i].second); cout<<endl; } }