QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#552397#4234. Tic Tac Toe CountingFinderHTWA 140ms5492kbC++142.4kb2024-09-07 22:34:282024-09-07 22:34:28

Judging History

This is the latest submission verdict.

  • [2024-09-07 22:34:28]
  • Judged
  • Verdict: WA
  • Time: 140ms
  • Memory: 5492kb
  • [2024-09-07 22:34:28]
  • Submitted

answer

#include<bits/stdc++.h>
#define gt getchar
#define pt putchar
#define int long long
#define ull unsigned long long
#define fst first
#define snd second
#define L(x) x<<1
#define R(x) x<<1|1
using namespace std;
typedef pair<int,int> pii;
const double eps=1e-8;
inline bool pts(char ch){return ch>=48&&ch<=57;}
inline int read(){
	bool f=0;int x=0;char ch;
	ch=gt();
	while(!pts(ch)&&ch!=EOF){if(ch=='-')f=1;ch=gt();}
	while(pts(ch)){x*=10;x+=(ch-48);ch=gt();}
	if(f)return -x;
	else return x;
}
template<class T>
inline void print(T x){
	char s[114];
	int top=0;
	if(x<0)pt('-');
	do{
		top++;
		if(x>=0)s[top]=(x%10)+48;
		else s[top]=(-(x%10)+48);
		x/=10;
	}while(x);
	while(top){pt(s[top]);top--;}
}
map<string,pii>ans;
int getfns(string s){
    //行
    if(s[0]==s[1]&&s[1]==s[2]){
        if(s[0]=='X')return 1;
        else if(s[0]=='O')return 2;
    }
    if(s[4]==s[3]&&s[5]==s[4]){
        if(s[4]=='X')return 1;
        else if(s[4]=='O')return 2;
    }
    if(s[6]==s[7]&&s[7]==s[8]){
        if(s[6]=='X')return 1;
        else if(s[6]=='O')return 2;
    }
    //列
    if(s[0]==s[3]&&s[3]==s[6]){
        if(s[3]=='X')return 1;
        else if(s[3]=='O')return 2;
    }
    if(s[1]==s[4]&&s[4]==s[7]){
        if(s[4]=='X')return 1;
        else if(s[4]=='O')return 2;
    }
    if(s[2]==s[5]&&s[5]==s[8]){
        if(s[2]=='X')return 1;
        else if(s[2]=='O')return 2;
    }
    //对角线
    if(s[0]==s[4]&&s[4]==s[8]){
        if(s[0]=='X')return 1;
        else if(s[0]=='O')return 2;
    }
    if(s[2]==s[4]&&s[4]==s[6]){
        if(s[4]=='X')return 1;
        else if(s[4]=='O')return 2;
    }
    return 0;
}
pii dfs(string s,char ch){
    pii ff;
    int flag=getfns(s);
    //cout<<s<<'\n';
    if(flag){
        if(flag==1)ff.fst=1;
        else ff.snd=1;
        ans[s]=ff;
		return ff;
    }
    for(int i=0;i<9;i++){
        if(s[i]!='.')continue;
        s[i]=ch;
        pii tmp;
        if(ch=='O')tmp=dfs(s,'X');
        else tmp=dfs(s,'O');
        ff.fst+=tmp.fst;
        ff.snd+=tmp.snd;
        s[i]='.';
    }
    ans[s]=ff;
    return ff;
}
signed main(){
    dfs(".........",'X');
    int T=read();
    while(T--){
        string s;
        cin>>s;
        if(!ans[s].fst&&!ans[s].snd)cout<<-1<<' '<<-1<<'\n';
        else cout<<ans[s].fst<<' '<<ans[s].snd<<'\n';
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 65ms
memory: 4352kb

input:

4
XX..O....
X...OX...
OOOX.X.X.
OOOXXX...

output:

191 194
232 200
0 1
-1 -1

result:

ok 4 lines

Test #2:

score: 0
Accepted
time: 132ms
memory: 4380kb

input:

100000
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
......

output:

131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
131184 77904
1...

result:

ok 100000 lines

Test #3:

score: -100
Wrong Answer
time: 140ms
memory: 5492kb

input:

100000
.........
X........
O........
.X.......
XX.......
OX.......
.O.......
XO.......
OO.......
..X......
X.X......
O.X......
.XX......
XXX......
OXX......
.OX......
XOX......
OOX......
..O......
X.O......
O.O......
.XO......
XXO......
OXO......
.OO......
XOO......
OOO......
...X.....
X..X.....
O.....

output:

131184 77904
14652 7896
-1 -1
14232 10176
-1 -1
1798 1276
-1 -1
2048 756
-1 -1
14652 7896
-1 -1
1832 1132
-1 -1
-1 -1
220 248
2048 756
268 144
-1 -1
-1 -1
1832 1132
-1 -1
1798 1276
220 248
-1 -1
-1 -1
-1 -1
-1 -1
14232 10176
-1 -1
1798 1276
-1 -1
-1 -1
264 188
1868 1080
239 126
-1 -1
-1 -1
-1 -1
312...

result:

wrong answer 1211th lines differ - expected: '0 0', found: '-1 -1'