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;
        }
}