2014年12月29日 星期一

2014/12/29 POJ 1013 Counterfeit Dollar

/*
    枚舉 偽幣是誰 以及輕重
    再加以驗證
*/
// http://poj.org/problem?id=1013
#include <iostream>
#include <cstdio>

using namespace std;

int T;
string s[3][3];

int main()
{
    scanf("%d", &T);

    while( T-- )
    {
        for(int i = 0; i < 3; i++)
            for(int j = 0; j < 3; j++)
                cin>>s[i][j];

        for(char c = 'A'; c <= 'L'; c++)
            for(int k = 0; k <= 1; k++)
            {
                bool OK = true; int cnt = 0;

                for(int i = 0; i < 3; i++)
                {
                    if( s[i][0].find(c) != -1 && s[i][1].find(c) == -1 )
                    {
                        if( k == 0 && s[i][2] == "down" ) cnt++;
                        else if( k == 1 && s[i][2] == "up" ) cnt++;
                        else OK = false;
                    }
                    if( s[i][0].find(c) == -1 && s[i][1].find(c) != -1 )
                    {
                        if( k == 0 && s[i][2] == "up" ) cnt++;
                        else if( k == 1 && s[i][2] == "down" ) cnt++;
                        else OK = false;
                    }
                    if( s[i][0].find(c) == -1 && s[i][1].find(c) == -1 )
                        if( s[i][2] != "even" ) OK = false;
                    if( s[i][0].find(c) != -1 && s[i][1].find(c) != -1 )
                        if( s[i][2] != "even" ) OK = false;
                }

                if( cnt && OK )
                {
                    printf("%c is the counterfeit coin and it is ", c);
                    if( k ) printf("heavy.\n");
                    else printf("light.\n");
                }

            }
    }
}

沒有留言:

張貼留言