代码:
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <vector>
using namespace std;
const int MAXN = 100005;
int chessBoard[4][4];
int Test(int x1, int x2, int x3)
{
if(x2 == x1 && x2 == x3)
return x2;
return 0;
}
int main()
{
#ifdef _LOCAL
freopen("F://input.txt", "r", stdin);
#endif
int countX = 0, countO = 0;
for(int i = 1; i <= 3; ++i)
{
for(int j = 1; j <= 3; ++j)
{
char ch;
scanf("%c", &ch);
if(ch == 'X')
{
countX++;
chessBoard[i][j] = 1;
}
else if(ch == '0')
{
countO++;
chessBoard[i][j] = 2;
}
}
getchar();
}
if(countO > countX || countX - countO > 1)
{
printf("illegal\n");
return 0;
}
vector<int> ans;
for(int i = 1; i <= 3; ++i)
{
ans.push_back(Test(chessBoard[i][1], chessBoard[i][2], chessBoard[i][3]));
ans.push_back(Test(chessBoard[1][i], chessBoard[2][i], chessBoard[3][i]));
}
ans.push_back(Test(chessBoard[1][1], chessBoard[2][2], chessBoard[3][3]));
ans.push_back(Test(chessBoard[1][3], chessBoard[2][2], chessBoard[3][1]));
sort(ans.begin(), ans.end());
int last = ans.size() - 1;
if(ans[last - 1] == 1 && ans[last] == 2 || ans[last] == 2 && countX > countO || ans[last] == 1 && countX == countO)
{
printf("illegal\n");
return 0;
}
if(ans[last] == 1)
printf("the first player won\n");
else if(ans[last] == 2)
printf("the second player won\n");
else if(countX + countO == 9)
printf("draw\n");
else if(countX == countO)
printf("first\n");
else
printf("second\n");
return 0;
}