Pagini recente » Cod sursa (job #1429315) | Cod sursa (job #2437236) | Cod sursa (job #3155818) | Cod sursa (job #604137) | Cod sursa (job #2139342)
#include <bits/stdc++.h>
#define DM 4
using namespace std;
ifstream fin("xsizero.in");
ofstream fout("xsizero.out");
/// -1 invalid
/// 0 draw
/// 1 win X
/// 2 lose X
/// 1 X
/// 2 0
int n=3,nrx,nr0,cont;
int c[4][3],l[4][3],d[3][3];
string v[4];
int toIndex(char a){
return (a=='X'?1:2);
}
void arrange(){
for(int i=0;i<n;++i) for(int j=0;j<n;++j){
if(v[i][j]=='X' || v[i][j]=='0'){
int k=0;
for(;k<n && !c[j][k];++k); c[j][k]=toIndex(v[i][j]),k=0;
for(;k<n && !l[i][k];++k); l[i][k]=toIndex(v[i][j]),k=0;
if(i==j){
for(;k<n && !d[0][k];++k);
d[0][k]=toIndex(v[i][j]),k=0;
} else if(i==n-j+1){
for(;k<n; && !d[1][k];++k);
d[1][k]=toIndex(v[i][j]),k=0;
}
}
}
}
void afis(int ans){
fout<<"Testul #"<<cont<<": ";
if(ans==-1) fout<<"invalid";
if(!ans) fout<<"draw";
if(ans==1) fout<<"win";
if(ans==2) fout<<"lose";
fout<<'\n';
}
bool isValid(){
int nrX=0,nr0=0;
for(auto i:v) for(auto j:v){
if(j=='0') nr0++;
else if(i=='X') nrX++;
}
if(abs(nrX-nr0)>1) return 0;
return 1;
}
int main()
{
while(fin>>v[0]>>v[1]>>v[2]){
cont++;
if(!isValid()) afis(-1);
arrange();
}
return 0;
}