lunes, 24 de octubre de 2011

10363 - Tic Tac Toe, uva

#include <iostream>
#include <vector>
#include <cstdio>
#define db(a) cout << #a << " = " << a << endl;
using namespace std;

int main() {
	int t, X, O, michiX, michiO, puroX, puroO;
	cin >> t;
	vector lista(3);
	for(int i = 0; i < t; i++){
		X = O = 0;
		for(int k = 0; k < 3; k++){
			cin >> lista[k];
			for(int u = 0; u < lista[k].size(); u++){
				if(lista[k][u] == 'X') X++;
				if(lista[k][u] == 'O') O++;
			}
		}
		michiX = michiO = puroX = puroO = 0;
		for(int i = 0; i < 3; i++){
			puroX = 0;
			puroO = 0;
			for(int j = 0; j < 3; j++){
				if(lista[i][j] == 'X') puroX++;
				if(lista[i][j] == 'O') puroO++;
			}
			if(puroX == 3) michiX++;
			if(puroO == 3) michiO++;
			puroX = 0;
			puroO = 0;
			for(int j = 0; j < 3; j++){
				if(lista[j][i] == 'X') puroX++;
				if(lista[j][i] == 'O') puroO++;
			}
			if(puroX == 3) michiX++;
			if(puroO == 3) michiO++;
		}
		puroX = 0;
		puroO = 0;
		for(int i = 0; i < 3; i++){
			if(lista[i][i] == 'X') puroX++;
			if(lista[i][i] == 'O') puroO++;
		}
		if(puroX == 3) michiX++;
		if(puroO == 3) michiO++;
		puroX = 0;
		puroO = 0;
		for(int i = 0; i < 3; i++){
			if(lista[i][2 - i] == 'X') puroX++;
			if(lista[i][2 - i] == 'O') puroO++;
		}
		if(puroX == 3) michiX++;
		if(puroO == 3) michiO++;
		if(michiX == 0 && michiO == 0){
			if( X - 1 == O || X == O) cout << "yes" << endl;
			else cout << "no" << endl;
		}
		else
			if((michiX == 1 || michiX == 2) && michiO == 0){
				if(X - 1 == O) cout << "yes" << endl;
				else cout << "no" << endl;
			}
			else 
				if(michiX == 0 && michiO == 1)
					if(X == O) cout << "yes" << endl;
					else cout << "no" << endl;
				else
					cout << "no" << endl;
	}
	return 0;
}


No hay comentarios:

Publicar un comentario