In this HackerEarth Tic-tac-toe problem solution, A game of tic-tac-toe is played on a 3 x 3 square grid. Each cell is either empty (denoted by '.') or occupied by one of the two players ('X' and 'O'). X goes first and then they take turns alternatively. If X is written three times in a straight line, then X wins and the game ends. The same goes for O. If there is no empty cell left, then the game ends as a draw. You are given the description of a game of tic-tac-toe. You have to determine the state of the game.

The states of the game are as follows:
1. If the game is invalid, that is, if there is no possibility of it happening, output "Wait, what?".
2. If X has won, then print "X won." else if O has won print "O won.".
3. If it is a draw, then print "It is a draw.".
4. Otherwise, print whose turn it is, "X's turn." or "O's turn." accordingly.

## HackerEarth Tic-tac-toe problem solution.

`#include<bits/stdc++.h>using namespace std;string A;int Count(char ch){    int cnt = 0;    for (int i = 0; i < 3; i ++)        for (int j = 0; j < 3; j ++)            cnt += A[i][j] == ch;    return (cnt);}int Win(char ch){    int cnt = 0;    for (int i = 0; i < 3; i ++)        cnt += A[i] == ch && A[i] == ch && A[i] == ch,        cnt += A[i] == ch && A[i] == ch && A[i] == ch;    cnt += A == ch && A == ch && A == ch;    cnt += A == ch && A == ch && A == ch;    return (cnt > 0);}int main(){    cin >> A >> A >> A;    int Cx = Count('X'), Wx = Win('X');    int Co = Count('O'), Wo = Win('O');    if (Cx < Co)        return !printf("Wait, what?");    if (Cx > Co + 1)        return !printf("Wait, what?");    if (Wx + Wo > 1)        return !printf("Wait, what?");    if (Wx && Cx != Co + 1)        return !printf("Wait, what?");    if (Wx)        return !printf("X won.");    if (Wo && Cx != Co)        return !printf("Wait, what?");    if (Wo)        return !printf("O won.");    if (Cx + Co == 9)        return !printf("It's a draw.");    if (Cx == Co)        return !printf("X's turn.");    return !printf("O's turn.");}`