QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#381738 | #5070. Check Pattern is Bad | mazihang2022 | WA | 0ms | 3660kb | C++14 | 2.8kb | 2024-04-07 20:41:33 | 2024-04-07 20:41:36 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define fir first
#define sec second
#define pii pair<int,int>
using namespace std;
const int maxn=105;
const int inf=0x3f3f3f3f;
namespace Solve {
char c[maxn][maxn];
void main(int tid) {
int n,m;
cin>>n>>m;
set<pii> all;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
cin>>c[i][j];
if(c[i][j]=='?') {
all.insert({i,j});
} else {
c[i][j]=c[i][j]=='B'?'1':'0';
}
}
}
// if(tid==221) {
// for(int i=1;i<=n;i++) {
// for(int j=1;j<=m;j++) {
// cout<<c[i][j];
// }
// cout<<"\n";
// }
// } else if(tid>3) {
// return ;
// }
bool ok=true;
for(int i=1;i<=n-1;i++) {
for(int j=1;j<=m-1;j++) {
if(c[i][j]!='?'&&c[i][j+1]!='?'&&c[i][j]==c[i+1][j+1]&&c[i][j+1]==c[i+1][j]&&c[i][j]!=c[i][j+1]) {
ok=false;
}
}
}
queue<pii> q;
auto ck=[&](int x,int y) {
if(c[x][y]!='?') {
return ;
}
char ans='?';
auto ckneq=[&](char c) {
if(ans==c) {
ok=false;
}
};
if(c[x-1][y-1]=='0'&&c[x][y-1]=='1'&&c[x-1][y]=='1') {
ckneq('0');
ans='1';
}
if(c[x-1][y-1]=='1'&&c[x][y-1]=='0'&&c[x-1][y]=='0') {
ckneq('1');
ans='0';
}
if(c[x-1][y]=='1'&&c[x][y+1]=='1'&&c[x-1][y+1]=='0') {
ckneq('0');
ans='1';
}
if(c[x-1][y]=='0'&&c[x][y+1]=='0'&&c[x-1][y+1]=='1') {
ckneq('1');
ans='0';
}
if(c[x][y-1]=='1'&&c[x+1][y]=='1'&&c[x+1][y-1]=='0') {
ckneq('0');
ans='1';
}
if(c[x][y-1]=='0'&&c[x+1][y]=='0'&&c[x+1][y-1]=='1') {
ckneq('1');
ans='0';
}
if(c[x][y+1]=='1'&&c[x+1][y]=='1'&&c[x+1][y+1]=='0') {
ckneq('0');
ans='1';
}
if(c[x][y+1]=='0'&&c[x+1][y]=='0'&&c[x+1][y+1]=='1') {
ckneq('1');
ans='0';
}
if(ans=='?') {
return ;
}
c[x][y]=ans;
all.erase({x,y});
q.push({x,y});
};
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
if(c[i][j]=='?') {
ck(i,j);
}
}
}
while(all.size()&&ok) {
if(q.size()) {
pii p=q.front();
q.pop();
ck(p.fir-1,p.sec+1);
ck(p.fir-1,p.sec);
ck(p.fir-1,p.sec+1);
ck(p.fir,p.sec-1);
ck(p.fir,p.sec+1);
ck(p.fir+1,p.sec-1);
ck(p.fir+1,p.sec);
ck(p.fir+1,p.sec+1);
} else {
pii p=*all.begin();
all.erase(p);
c[p.fir][p.sec]='0';
q.push(p);
}
}
if(!ok) {
cout<<"NO\n";
return ;
}
cout<<"YES\n";
// for(int i=1;i<=n;i++) {
// for(int j=1;j<=m;j++) {
// cout<<(c[i][j]=='1'?'B':'W');
// }
// cout<<"\n";
// }
}
}
signed main() {
// freopen("data.in","r",stdin);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int T;
cin>>T;
for(int t=1;t<=T;t++) {
Solve::main(t);
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3660kb
input:
3 2 2 ?? ?? 3 3 BW? W?B ?BW 3 3 BW? W?W ?W?
output:
YES NO YES
result:
wrong answer Token parameter [name=g[i]] equals to "NO", doesn't correspond to pattern "[BW]{1,100}" (test case 1)