QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#140211 | #5509. Kooky Tic-Tac-Toe | PhantomThreshold# | AC ✓ | 39ms | 3600kb | C++20 | 3.9kb | 2023-08-15 14:38:56 | 2023-08-15 14:38:57 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
int T;
cin>>T;
while(T--)
{
int n,k;
cin>>n>>k;
vector<string> b(n+5);
vector<vector<int>> a(n+5,vector<int>(n+5));
for(int i=1;i<=n;i++)
{
string s;
cin>>s;
b[i]=' '+s;
}
int co=0,cx=0;
vector<pair<int,int>> po,px;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(b[i][j]=='o')
co++,po.emplace_back(i,j);
else if(b[i][j]=='x')
cx++,px.emplace_back(i,j);
}
}
auto chk=[&](int x){return 1<=x and x<=n;};
int wo=0,wx=0;
auto line=[&](int x,int y,int dx,int dy,char ch)
{
if(not chk(x+dx*(k-1)) or not chk(y+dy*(k-1)))return;
for(int i=0;i<k;i++)
{
if(b[x+dx*i][y+dy*i]!=ch)return;
}
for(int i=0;i<k;i++)
{
a[x+dx*i][y+dy*i]++;
}
if(ch=='o')wo++;
else wx++;
};
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
line(i,j,1,0,'o');
line(i,j,1,0,'x');
line(i,j,1,1,'o');
line(i,j,1,1,'x');
line(i,j,0,1,'o');
line(i,j,0,1,'x');
line(i,j,1,-1,'o');
line(i,j,1,-1,'x');
}
}
if(wo and wx)
{
cout<<"NIE"<<endl;
}
else if(not wo and not wx)
{
if(co+cx==n*n)
{
if(co==cx)//x first
{
cout<<"TAK"<<endl;
for(int i=0;i<cx;i++)
{
cout<<px[i].first<<' '<<px[i].second<<"\n";
cout<<po[i].first<<' '<<po[i].second<<"\n";
}
}
else if(co==cx+1)//o first
{
cout<<"TAK"<<endl;
for(int i=0;i<cx;i++)
{
cout<<po[i].first<<' '<<po[i].second<<"\n";
cout<<px[i].first<<' '<<px[i].second<<"\n";
}
cout<<po[co-1].first<<' '<<po[co-1].second<<"\n";
}
else if(cx==co+1)//x first
{
cout<<"TAK"<<endl;
for(int i=0;i<co;i++)
{
cout<<px[i].first<<' '<<px[i].second<<"\n";
cout<<po[i].first<<' '<<po[i].second<<"\n";
}
cout<<px[cx-1].first<<' '<<px[cx-1].second<<"\n";
}
else
{
cout<<"NIE"<<endl;
}
}
else
{
cout<<"NIE"<<endl;
}
}
else if(wo)
{
int tx=0,ty=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]==wo)
{
tx=i;ty=j;
}
}
}
if(tx==0)
{
cout<<"NIE"<<endl;
}
else
{
for(int i=0;i<co;i++)
{
if(po[i]==make_pair(tx,ty))
{
swap(po[i],po[co-1]);
break;
}
}
if(co==cx)//x first
{
cout<<"TAK"<<endl;
for(int i=0;i<cx;i++)
{
cout<<px[i].first<<' '<<px[i].second<<"\n";
cout<<po[i].first<<' '<<po[i].second<<"\n";
}
}
else if(co==cx+1)//o first
{
cout<<"TAK"<<endl;
for(int i=0;i<cx;i++)
{
cout<<po[i].first<<' '<<po[i].second<<"\n";
cout<<px[i].first<<' '<<px[i].second<<"\n";
}
cout<<po[co-1].first<<' '<<po[co-1].second<<"\n";
}
else
{
cout<<"NIE"<<endl;
}
}
}
else //wx
{
int tx=0,ty=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]==wx)
{
tx=i;ty=j;
}
}
}
if(tx==0)
{
cout<<"NIE"<<endl;
}
else
{
for(int i=0;i<cx;i++)
{
if(px[i]==make_pair(tx,ty))
{
swap(px[i],px[cx-1]);
break;
}
}
if(cx==co)//o first
{
cout<<"TAK"<<endl;
for(int i=0;i<co;i++)
{
cout<<po[i].first<<' '<<po[i].second<<"\n";
cout<<px[i].first<<' '<<px[i].second<<"\n";
}
}
else if(cx==co+1)//x first
{
cout<<"TAK"<<endl;
for(int i=0;i<co;i++)
{
cout<<px[i].first<<' '<<px[i].second<<"\n";
cout<<po[i].first<<' '<<po[i].second<<"\n";
}
cout<<px[cx-1].first<<' '<<px[cx-1].second<<"\n";
}
else
{
cout<<"NIE"<<endl;
}
}
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3512kb
input:
7 3 3 x.o xxx o.o 4 3 xx.x ...o ..o. .o.. 3 3 xoo oxx xoo 3 2 xoo oxx xoo 3 3 xox .o. xox 3 2 xo. ..x xo. 3 3 x.. .x. ..x
output:
TAK 1 1 1 3 2 1 3 1 2 2 3 3 2 3 TAK 1 1 2 4 1 2 3 3 1 4 4 2 TAK 1 2 1 1 1 3 2 2 2 1 2 3 3 2 3 1 3 3 NIE NIE NIE NIE
result:
ok correct (7 test cases)
Test #2:
score: 0
Accepted
time: 14ms
memory: 3600kb
input:
10000 3 3 x.o xxx o.o 3 3 xoo oxx xoo 3 2 xoo oxx xoo 3 3 xox .o. xox 3 2 xo. ..x xo. 3 2 oox .xo o.x 5 5 xxx.. xxo.x xoo.. xxxox .oooo 3 3 xxx .o. oo. 3 2 x.o xo. ..o 3 2 ..x xxo .o. 3 3 xxo o.. oxo 3 2 oox ..x ... 3 3 xxo ... .ox 3 3 .xo ... oox 3 3 .x. xo. o.o 3 2 o.. xxo .ox 3 2 x.x xoo x.o 3 2 ...
output:
TAK 1 1 1 3 2 1 3 1 2 2 3 3 2 3 TAK 1 2 1 1 1 3 2 2 2 1 2 3 3 2 3 1 3 3 NIE NIE NIE NIE NIE TAK 2 2 1 1 3 1 1 2 3 2 1 3 NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE TAK 1 2 1 1 1 3 1 4 2 3 2 2 2 4 4 1 3 1 4 2 3 2 4 3 NIE NIE NIE NIE NIE TAK 2 1 1 1 2 3 4 3 2 4 1 3 3 1 1 4 3 3 2 2 ...
result:
ok correct (10000 test cases)
Test #3:
score: 0
Accepted
time: 39ms
memory: 3484kb
input:
10000 6 4 x.xx.o xo.o.x ooox.o o..xo. ..xxxo o.oxx. 6 5 oooxxx oxoxxo xoooxo xoxxxx xooxox xoxxxx 6 3 o.x.x. oo.o.x xx.oo. .x.xx. ooxo.. .xxo.. 6 6 xoo..o o.xx.x oooooo xx.x.. o..xx. ...xxx 6 5 xooxoo ooxxoo xxooxx oxooxx oxoxxx xxoxoo 6 5 xoxxxo ooooxo ooxoxx oxxoox xxxxox ooooxo 6 5 o....o .ox.oo ...
output:
TAK 1 6 1 1 2 2 1 3 2 4 1 4 3 1 2 1 3 2 2 6 3 3 3 4 3 6 4 4 4 1 5 3 4 5 5 4 5 6 5 5 6 1 6 5 6 3 6 4 NIE TAK 1 3 1 1 1 5 2 1 2 6 2 2 3 1 2 4 3 2 3 4 4 2 3 5 4 4 5 1 4 5 5 2 6 3 5 4 6 2 6 4 5 3 NIE TAK 1 1 1 2 1 4 1 3 2 3 1 5 2 4 1 6 3 1 2 1 3 2 2 2 3 5 2 5 3 6 2 6 4 2 3 3 4 5 3 4 4 6 4 1 5 2 4 3 5 4 ...
result:
ok correct (10000 test cases)