QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#643085 | #8935. Puzzle: Easy as Scrabble | Wolam | WA | 0ms | 3648kb | C++20 | 9.5kb | 2024-10-15 18:40:43 | 2024-10-15 18:40:44 |
Judging History
answer
#include<bits/stdc++.h>
#define endl "\n"
using namespace std;
using ll = long long;
const int maxn = 1e3 + 10;
char D[maxn],U[maxn],L[maxn],R[maxn];
char maze[maxn][maxn];
bool valid=true;
void add(int type,int pos,int dir,int l,int r)//dir[1,4],pos[1,2] type[1,2]
{
if(dir<=2)//up or down
{
if(dir==1)//up
{
if(D[pos]=='.')
{
return;
}
for(int i=r;i>=l;i--)
{
if(type==1)//left
{
if(maze[i][pos]==D[pos])
{
break;
}
if((L[i]=='.'||L[i]==D[pos])&&(maze[i][pos]=='.'))
{
maze[i][pos]=D[pos];
L[i]='.';
break;
}
else
{
if(maze[i][pos]!='.'&&maze[i][pos]!='x')
{
valid=false;
}
else
{
maze[i][pos]='x';
}
}
}
else//right
{
if(maze[i][pos]==D[pos])
{
break;
}
if((R[i]=='.'||R[i]==D[pos])&&(maze[i][pos]=='.'))
{
maze[i][pos]=D[pos];
R[i]='.';
break;
}
else
{
if(maze[i][pos]!='.'&&maze[i][pos]!='x')
{
valid=false;
}
else
{
maze[i][pos]='x';
}
}
}
}
}
else//down
{
if(U[pos]=='.')
{
return;
}
for(int i=l;i<=r;i++)
{
if(type==1)//left
{
if(maze[i][pos]==U[pos])
{
break;
}
if((L[i]=='.'||L[i]==U[pos])&&(maze[i][pos]=='.'))
{
maze[i][pos]=U[pos];
L[i]='.';
break;
}
else
{
if(maze[i][pos]!='.'&&maze[i][pos]!='x')
{
valid=false;
}
else
{
maze[i][pos]='x';
}
}
}
else//right
{
if(maze[i][pos]==U[pos])
{
break;
}
if((R[i]=='.'||R[i]==U[pos])&&(maze[i][pos]=='.'))
{
maze[i][pos]=U[pos];
R[i]='.';
break;
}
else
{
if(maze[i][pos]!='.'&&maze[i][pos]!='x')
{
valid=false;
}
else
{
maze[i][pos]='x';
}
}
}
}
}
}
else//left or right
{
if(dir==3)//left
{
if(R[pos]=='.')
{
return;
}
for(int i=r;i>=l;i--)
{
if(type==1)//up
{
if(maze[pos][i]==R[pos])
{
break;
}
if((U[i]=='.'||U[i]==R[pos])&&(maze[pos][i]=='.'))
{
maze[pos][i]=R[pos];
U[i]='.';
break;
}
else
{
if(maze[pos][i]!='.'&&maze[pos][i]!='x')
{
valid=false;
}
else
{
maze[pos][i]='x';
}
}
}
else//down
{
if(maze[pos][i]==R[pos])
{
break;
}
if((D[i]=='.'||D[i]==R[pos])&&(maze[pos][i]=='.'))
{
maze[pos][i]=R[pos];
D[i]='.';
break;
}
else
{
if(maze[pos][i]!='.'&&maze[pos][i]!='x')
{
valid=false;
}
else
{
maze[pos][i]='x';
}
}
}
}
}
else//right
{
if(L[pos]=='.')
{
return;
}
for(int i=l;i<=r;i++)
{
if(type==1)//up
{
if(maze[pos][i]==L[pos])
{
break;
}
if((U[i]=='.'||U[i]==L[pos])&&(maze[pos][i]=='.'))
{
maze[pos][i]=L[pos];
U[i]='.';
break;
}
else
{
if(maze[pos][i]!='.'&&maze[pos][i]!='x')
{
valid=false;
}
else
{
maze[pos][i]='x';
}
}
}
else//down
{
if(maze[pos][i]==L[pos])
{
break;
}
if((D[i]=='.'||D[i]==L[pos])&&(maze[pos][i]=='.'))
{
maze[pos][i]=L[pos];
D[i]='.';
break;
}
else
{
if(maze[pos][i]!='.'&&maze[pos][i]!='x')
{
valid=false;
}
else
{
maze[pos][i]='x';
}
}
}
}
}
}
}
void color(int l1,int r1,int l2,int r2)//[r,c]
{
if(l1>r1||l2>r2)
{
return;
}
add(1,l1,4,l2,r2);
add(1,l2,2,l1,r1);
add(2,r2,2,l1,r1);
add(1,l1,3,l2,r2);
add(2,r1,3,l2,r2);
add(2,r2,1,l1,r1);
add(1,l2,1,l1,r1);
add(2,r1,4,l2,r2);
for(int i=l1+1;i<=r1-1;i++)
{
if(L[i]!='.'&&maze[i][l2]=='.')
{
maze[i][l2]=L[i];
L[i]='.';
}
if(R[i]!='.'&&maze[i][r2]=='.')
{
maze[i][r2]=R[i];
R[i]='.';
}
}
for(int i=l2+1;i<=r2-1;i++)
{
if(U[i]!='.'&&maze[l1][i]=='.')
{
maze[l1][i]=U[i];
U[i]='.';
}
if(D[i]!='.'&&maze[r1][i]=='.')
{
maze[r1][i]=D[i];
D[i]='.';
}
}
color(l1+1,r1-1,l2+1,r2-1);
}
void solve(void)
{
int n,m;
cin>>n>>m;
for(int i=0;i<=n+1;i++)
{
for(int j=0;j<=m+1;j++)
{
cin>>maze[i][j];
}
}
for(int i=1;i<=m;i++)
{
U[i]=maze[0][i];
D[i]=maze[n+1][i];
}
for(int i=1;i<=n;i++)
{
L[i]=maze[i][0];
R[i]=maze[i][m+1];
}
color(1,n,1,m);
if(valid)
{
for(int i=1;i<=n;i++)
{
if(L[i]!='.'||R[i]!='.')
{
cout<<"NO"<<endl;
return;
}
}
for(int i=1;i<=m;i++)
{
if(U[i]!='.'||D[i]!='.')
{
cout<<"NO"<<endl;
return;
}
}
cout<<"YES"<<endl;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(maze[i][j]=='x'||maze[i][j]=='.')
{
cout<<'.';
}
else
{
cout<<maze[i][j];
}
}
cout<<endl;
}
}
else
{
cout<<"NO"<<endl;
}
}
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t=1;
while(t--)
{
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3648kb
input:
5 5 .CBA... ....x.. ..x...C A.....B B..x..A C...... .......
output:
NO
result:
wrong answer Jury has answer but participant has not.