uva 141

来源:互联网 发布:透明相机软件下载 编辑:程序博客网 时间:2024/06/10 01:09


//

//  main.cpp

//  ceshi

//

//  Created by 戴志扬 on 2016/11/6.

//  Copyright © 2016 sky.dai. All rights reserved.

//


//

//  main.cpp

//  ceshi

//

//  Created by 戴志扬 on 2016/10/25.

//  Copyright © 2016 sky.dai. All rights reserved.

//


#include<iostream>

#include<cstdio>

#include<map>

#include<climits>

#include<cmath>

#include<cstring>

#include<vector>

#include<cstdlib>

#include<list>


using namespacestd;

////////


char Map[52][52];

map<string,int>judge;

int Size;


void initial()

{

    judge.clear();

    memset(Map,'1',sizeof(Map));

    

}


string switch_over(int k)

{

    string str;

    switch (k)

    {

        case0:

            for(int i=0;i<Size;i++)

                for(int j=0;j<Size;j++)

                    str+=Map[i][j];

            break;

       case1:

            for(int i=Size-1;i>=0;i--)

                for(int j=0;j<Size;j++)

                    str+=Map[i][j];

            break;

       case2:

            for(int i=0;i<Size;i++)

                for(int j=Size-1;j>=0;j--)

                    str+=Map[i][j];

        case3:

            for(int i=Size-1;i>=0;i--)

                for(int j=Size-1;j>=0;j--)

                    str+=Map[i][j];


    }

    return str;

}

int main()

{

    while(scanf("%d",&Size)==1&& Size)

    {

        initial();


        

        int x,y;

        char ch;

        string str;

        bool flag =false;

        

        for(int i=0;i<Size;i++)

            for(int j=0;j<Size;j++)

                str+=Map[i][j];

        judge[str] =1;

        //保存图像

        int ans =0 ;

        int man =0;

        

        for(int i=0;i<Size*2;i++)

        {

            scanf("%d %d %c",&x,&y,&ch);

            if(flag)

                continue;

            if(ch=='+')

                Map[x-1][y-1] ='2';

            else

                Map[x-1][y-1] ='1';

            //input&&construct map

            string Str[4];

            for(int j=0;j<4;j++)

            {

                Str[j] = switch_over(j);

                if(judge[Str[j]]!=0)

                {

                    flag = true;

                    ans = i+1;

                     man  = i;

                    break;

                }

                    

            }

            if(flag ==false)

            {

                for(int j=0;j<4;j++)

                    judge[Str[j]]=1;

            }

            

        }

        if(flag ==true)

        {

            if(man&1)

                man = 1;

            else

                man =2;

            printf("Player %d wins on move %d\n",man,ans);

        }

        elseprintf("Draw\n");

        

        

    }

    return0;

}


0 0