QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#367731 | #5070. Check Pattern is Bad | bear0131 | TL | 66ms | 3712kb | C++14 | 3.9kb | 2024-03-26 12:46:56 | 2024-03-26 12:46:58 |
Judging History
answer
#include<bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (n); ++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef vector<int> vi;
typedef pair<int, int> pii;
typedef pair<ll, int> pli;
typedef array<int, 3> ai3;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3fll;
const int Mod = 998244353;
inline int sign(int a){ return (a&1) ? (Mod-1) : 1; }
inline void uadd(int &a, int b){ a += b-Mod; a += (a>>31) & Mod; }
inline void usub(int &a, int b){ a -= b, a += (a>>31) & Mod; }
inline void umul(int &a, int b){ a = (int)(1ll * a * b % Mod); }
inline int add(int a, int b){ a += b-Mod; a += (a>>31) & Mod; return a; }
inline int sub(int a, int b){ a -= b, a += (a>>31) & Mod; return a; }
inline int mul(int a, int b){ a = (int)(1ll * a * b % Mod); return a; }
int qpow(int b, ll p){ int ret = 1; while(p){ if(p&1) umul(ret, b); umul(b, b), p >>= 1; } return ret; }
const int fN = 1010;
int fact[fN], invfact[fN], pw2[fN], invpw2[fN], inv[fN];
void initfact(int n){
pw2[0] = 1; for(int i = 1; i <= n; ++i) pw2[i] = mul(pw2[i-1], 2);
invpw2[0] = 1; for(int i = 1; i <= n; ++i) invpw2[i] = mul(invpw2[i-1], (Mod+1) / 2);
fact[0] = 1; for(int i = 1; i <= n; ++i) fact[i] = mul(fact[i-1], i);
invfact[n] = qpow(fact[n], Mod-2); for(int i = n; i > 0; --i) invfact[i-1] = mul(invfact[i], i);
for(int i = 1; i <= n; ++i) inv[i] = mul(invfact[i], fact[i-1]);
}
int binom(int n, int m){ return (m < 0 || m > n) ? 0 : mul(fact[n], mul(invfact[m], invfact[n-m])); }
const double pi = acos(-1);
inline void chmax(int &a, int b){ (b>a) ? (a=b) : 0; }
inline void chmin(int &a, int b){ (b<a) ? (a=b) : 0; }
int n, m;
string s[111];
bool done[111][111];
bool ok = 1;
bool dfs(int x, int y);
bool check(int x, int y){
if((s[x][y] != '?') + (s[x][y+1] != '?') + (s[x+1][y] != '?') + (s[x+1][y+1] != '?') >= 3){
if(s[x][y] != s[x][y+1] && s[x][y] == s[x+1][y+1] && s[x+1][y] == s[x][y+1]) return 0;
//cout << "check " << x << " " << y << "\n";
if(s[x][y] == s[x+1][y+1]){
if(s[x+1][y] == '?'){
if(s[x][y+1] == s[x][y]) return 1;
else {
s[x+1][y] = s[x][y];
return dfs(x+1, y);
}
} else {
if(s[x+1][y] == s[x][y]) return 1;
else {
s[x][y+1] = s[x][y];
return dfs(x, y+1);
}
}
}
if(s[x][y+1] == s[x+1][y]){
//cout << " ???\n";
if(s[x][y] == '?'){
if(s[x+1][y+1] == s[x+1][y]) return 1;
else {
s[x][y] = s[x+1][y];
return dfs(x, y);
}
} else {
if(s[x][y] == s[x+1][y]) return 1;
else {
s[x+1][y+1] = s[x+1][y];
return dfs(x+1, y+1);
}
}
}
}
return 1;
}
bool dfs(int x, int y){
if(done[x][y]) return 1;
done[x][y] = 1;
if(x+1 < n && y+1 < m) if(!check(x, y)) return 0;
if(x && y+1 < m) if(!check(x-1, y)) return 0;
if(x+1 < n && y) if(!check(x, y-1)) return 0;
if(x && y) if(!check(x-1, y-1)) return 0;
return 1;
}
mt19937 rng(58);
inline int myrand(int l, int r){ return (int)(rng() % (r-l+1)) + l; }
string ans[111];
bool search(int x, int y){
if(y >= m) ++x, y = 0;
if(x >= n) return 1;
auto nxt = [&](){
if(!(x && y && !(ans[x][y] == ans[x][y-1] || ans[x][y] != ans[x-1][y-1] || ans[x][y-1] != ans[x-1][y]))) if(search(x, y+1)) return 1;
return 0;
};
if(s[x][y] != '?'){
ans[x][y] = s[x][y];
return nxt();
} else {
ans[x][y] = myrand(0, 1) ? 'W' : 'B';
if(nxt()) return 1;
ans[x][y] ^= ('W' ^ 'B');
if(nxt()) return 1;
return 0;
}
}
void solve(){
cin >> n >> m;
rep(i, n) cin >> s[i];
rep(i, n) rep(j, m) done[i][j] = 0;
ok = 1;
rep(i, n) rep(j, m) if(s[i][j] != '?' && !done[i][j]) ok &= dfs(i, j);
//cout << ": \n";
//rep(i, n) cout << s[i] << "\n";
if(!ok) cout << "NO\n";
else {
cout << "YES\n";
rep(i, n) ans[i] = s[i];
search(0, 0);
rep(i, n) cout << ans[i] << "\n";
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int T;
cin >> T;
while(T--) solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3704kb
input:
3 2 2 ?? ?? 3 3 BW? W?B ?BW 3 3 BW? W?W ?W?
output:
YES WB WW NO YES BWB WWW WWW
result:
ok ok (3 test cases)
Test #2:
score: 0
Accepted
time: 17ms
memory: 3652kb
input:
10000 9 2 BB BW WW WW ?W ?B B? W? BB 6 2 ?? ?B B? BW WW ?? 10 7 WBBBW?? ???BWWW ???BWWB ??WWBW? BBWBBWB WWB?WW? BWBW??? WWWWBBW BBWBB?W B?W?W?B 4 7 ??WBWWB ?BBWWWB ?W?BBB? BBBWBBB 10 1 B W ? B B W W W B ? 10 4 ??WW W?W? WWW? ???W ?W?? ?W?W W?W? ?W?W ???W ???W 8 3 WBW W?? ??? ??? W?W W?W ??? ?W? 4 1 ...
output:
YES BB BW WW WW WW BB BW WW BB YES BW BB BB BW WW WW NO NO YES B W B B B W W W B W YES BBWW WBWB WWWB BBWW BWWB WWWW WBWB WWWW BWBW BWWW YES WBW WBB WWB BBB WWW WWW BWW WWW YES W B B B YES WBWB WWWB YES BBWBBB BBWWWB YES WWWWB YES BWBWBB WWBWWB BBBWWW WWWWWW YES B YES BWB BBB WBW BBB WWB BBB BBW WWW...
result:
ok ok (10000 test cases)
Test #3:
score: 0
Accepted
time: 18ms
memory: 3584kb
input:
10000 9 6 ?B?W?W WWBBWB ?WB?BW B?W?W? WW??W? B???BW ?W?WW? W?B?B? ?W?BB? 10 1 W ? ? ? ? ? ? ? B W 9 4 ???? ???? W??? ?W?B ??WW ?BW? WW?W ??W? ??W? 3 2 ?W ?B BB 2 7 ?W?BWWB ??W???W 9 9 ?BW?WWW?W BW?WBBWWW W?W????WW W??WW??WW W?BWB?B?W ??BB?WWWW W???WBW?W WWW???WWW B?WWWWWW? 8 10 W??BWWW??B ?BWBWBW?BW...
output:
NO YES W W B W W B W W B W YES BWWB WWBB WBBB WWBB BWWW BBWW WWWW BBWB WWWB YES WW BB BB YES BWWBWWB WWWBWWW NO NO YES WWB BWW BBB BBW WWW YES BWWWWWWBW WWWBBWWWW WWBBBBWWW WWWWBBWBB WWWWWWWWW BWWBWWBWB WWWWWWWWW YES WBWWWWB BBBWWWW BWBWWWW BWWWWWB BBBBWWW WWWBWBB WWWWWWB WWWWWWW WWWWBWW YES WB WW B...
result:
ok ok (10000 test cases)
Test #4:
score: 0
Accepted
time: 14ms
memory: 3588kb
input:
10000 7 7 ?B??BBW ????BB? WBBB??B WW?B??? ?B??BBB BBWB??B B???BB? 10 6 W?WW?? W??W?? ?WWWW? ?WW?WW WW??W? W????? W?WW?? WW???W WWW??W ?W??W? 2 6 ?B??W? B???BB 1 8 ??BWB?W? 5 2 WB W? B? BB ?W 7 5 W???? ?WW?? ???W? WWWW? W?W?W ?W?B? W?WWB 8 5 B?WBW B??WW WWW?B WBBWB BW?WW B?W?B ??WWB BBW?B 10 4 WWWW ?...
output:
YES WBBWBBW WBWWBBB WBBBBWB WWBBWWB BBBBBBB BBWBBBB BBBBBBB YES WWWWBB WBWWWB WWWWWB BWWWWW WWWBWB WWWBBB WBWWWW WWWWWW WWWWWW BWBWWW YES WBWBWW BBBBBB YES WWBWBBWB YES WB WW BB BB BW YES WWWWW WWWWB WBBWB WWWWW WWWWW BWWBB WWWWB NO YES WWWW WWWB WBBB WWWB BWWW BWWW WWBB WWBW WWWW WBWB YES BWBBBB BW...
result:
ok ok (10000 test cases)
Test #5:
score: 0
Accepted
time: 13ms
memory: 3640kb
input:
10000 1 1 ? 7 9 W?WB????B ?WB??B??W BBB?W?WB? WWW??WWW? WW?B??W?W ?BWW??WWW B?WW?W?WB 3 7 ??BBBB? BW?WW?? B??B?BW 1 6 ?B?WWB 7 1 W W W B ? W ? 8 8 WW??W?B? WWW????? BB??WWWW ?W???WBW BBW???WB BWBWBWW? ?W?WW??B BB?????W 10 8 WWW?W?BW WB?W?WBW WW?W?WBW WWWW?WW? WBWB?B?W BW?BW??B ??WWBWWB W?BW?BWW W?W?...
output:
YES W YES WWWBBWWBB WWBBBBBBW BBBWWBWBW WWWWWWWWW WWWBBBWBW BBWWBBWWW BWWWBWWWB YES BBBBBBB BWWWWWW BWWBBBW YES BBBWWB YES W W W B B W W NO NO YES WBBWBBB NO YES WBW WBB BBB WBB BBW WWW BBB NO YES BBB BWB WWB WBB BBW BWW WWB BBB BBB BWB YES WW WB BB BW BB BW BB NO YES BB BB BW BB BB WB BB WB NO YES ...
result:
ok ok (10000 test cases)
Test #6:
score: 0
Accepted
time: 18ms
memory: 3600kb
input:
10000 9 1 W B ? B W W ? W B 1 10 W??????BWB 5 8 ??W??WB? ?B?WWB?W ??????B? BB??BBBB WB??BBB? 6 2 ?B ?? WB ?B WW W? 1 10 WW??BW?BW? 4 3 BW? ??? B?B ??W 10 10 WW?BBW?BW? WW?BW????? ?WWBW?WB?W ???B?BBBBB ??BBBB?BBW ?WW??W?WBB W??BB?WBBB BBWBW?WBBW ?W????BWB? ??BW??WBWB 1 6 ??B??? 6 5 WBB?W ?WWWW WWWW? ...
output:
YES W B W B W W B W B YES WWWBWWBBWB YES WWWBWWBW BBWWWBBW BBBBBBBB BBWBBBBB WBWBBBBB YES BB WW WB BB WW WW YES WWBBBWWBWW YES BWB BWW BBB BBW NO YES BWBWBW NO YES B B B W W B B W B YES BWWWBWWWW WWWBBBBWW WWWWWWBBB WBWWWWWWW WBWBWWWWW WWWWWWWWW BWWWWWBWW WWWWWWWWB YES WBBW WWWW WWWW WBWB WWWW WWWB ...
result:
ok ok (10000 test cases)
Test #7:
score: 0
Accepted
time: 47ms
memory: 3600kb
input:
10000 10 10 ?W?WW?W??W ?BWBW?BBWW ?BB?WWW?W? W?B?WWWWWW ?BWW?WWW?W BWWWWWWW?W WBBWW??B?? W??WW?W??W WWWW?WW?W? ?W?BWW?WW? 10 10 WB?WBBWWWB ?WWWW?WB?? ?B?BWW?BW? WBWBW??W?W B?WB?WBWWB WWBWBBWW?? ??WBBWBWBW WWB??WWBWB B?BWWWWBWW WW?WWWBWWB 10 10 ??W????WW? ?WW?W???W? ??W??WW?W? WW??WW?WW? ?W??WW?WW? ?...
output:
NO NO YES WBWWWBWWWW WWWWWWWWWB BBWBBWWBWB WWWBWWWWWB WWBBWWBWWW WWWBWWWWBW BWWBBWWWBB BBWWWWWWBB WWWWWWBWBW WWWWWWBWBW NO YES BWBBWBWWWB WWWBBBBBWB BWBBWWBWWB BBBBWWBWWW WBWBBWBBWW BBWBBBBBBB BBWWWWBWBB BWWBWWBWBB WWBBBBBWWW WBBWWBBBWW YES BBWBBBBWBB BWWWBBBWBB WWWBBWBBBB BWBBBBBBBB BWWBWBBBBB BBWB...
result:
ok ok (10000 test cases)
Test #8:
score: 0
Accepted
time: 44ms
memory: 3648kb
input:
10000 10 10 ?BBBBWBBB? ??W???WB?? BB?W???BB? ?B???BBB?? W??BB?WBBB ?B?B???W?W ?????BB??? ?BW???B??? ???BBB??BB BWBBBBBBB? 10 10 BWW?WWB?BW ??B?WBBBWB B??BB??BWB BW?BWB???W ?WB?WWW?W? B??B??W?BB ?WBB?WBB?B BB??BBWBW? WB??WBB?BW ?B???B?W?? 10 10 ??WWWB??BB ?WW???WBWW ???W??W?WW ?W?B?W?W?? WWB?WBB??W B...
output:
YES WBBBBWBBBB WWWBWWWBWB BBWWWBWBBB BBBBBBBBBB WBBBBWWBBB BBWBBBWWBW WWWWBBBBBW BBWBBWBBBB BWWBBBBWBB BWBBBBBBBW NO YES WWWWWBBBBB BWWWWWWBWW WWWWWBWBWW WWWBWWWWWB WWBBWBBWWW BWWBWBWWWW WWWWWWWWWW WWWWBBWWWW WBBWWBBWBW WBBWWWWWBB YES WWWWWWBWWW WWWWWWWWBB WWBWWWWWWB WWBWWWBWWW WWWWWWWWWW WWWWWBWWWW...
result:
ok ok (10000 test cases)
Test #9:
score: 0
Accepted
time: 20ms
memory: 3648kb
input:
10000 1 100 WWW?BWB?BB?BBW?BWBB?W??B?B?BWWBWB?WWB??BBBBB??BBBBB?BBBWBWWW?B?BBBWW??BBBW???B???W??W??BW?B?B?W??WB? 1 100 ?WBW?WB?BBBB?BWBWB???WWB?BBB?BBW?B?B??W?B??BBW??WBBW???WW?BBBB?WWB?WBB???WBBB?BBW?W??BW?B??BBBBBBBWB 1 100 W?????BBB?BB?BB?????BWWWB?B???BB??????B??BWW???B??B?B???????BBB??B?BBB???B...
output:
YES WWWWBWBBBBWBBWWBWBBBWWWBBBWBWWBWBWWWBBWBBBBBBBBBBBBBBBBWBWWWBBBBBBWWBBBBBWBBWBBWBWBBWWWBWBBWBBWBWWBW YES BWBWBWBWBBBBWBWBWBBBBWWBBBBBWBBWWBBBWWWWBWBBBWBWWBBWWWWWWBBBBBWWWBBWBBBWWWBBBWBBWBWBWBWBBBWBBBBBBBWB YES WWWWWWBBBBBBWBBBBBWWBWWWBWBBWWBBWWWBBWBWWBWWBBWBWBBWBBWWWWBWBBBWWBWBBBBWWBBBBWWWWWBWWW...
result:
ok ok (10000 test cases)
Test #10:
score: 0
Accepted
time: 66ms
memory: 3692kb
input:
10000 100 1 W B B ? B B B ? B B B B W B B B ? ? B ? B B ? W B W ? B ? B W W ? W ? B ? B B ? W W B ? B B ? ? W W B B ? B B ? B ? ? ? W B W B ? B W ? ? B B B B ? B ? W B B W B ? W B B ? B B ? B ? W ? B ? B B ? B W 100 1 ? W ? W ? W W W W W B W ? ? B B ? W ? B W W W W ? ? ? ? W W B W W W W W ? W W W ? ...
output:
YES W B B W B B B B B B B B W B B B W W B B B B W W B W W B B B W W W W W B B B B W W W B B B B B B W W B B B B B B B B B B W B W B B B W W B B B B B W B B W B B W B B W B B B B B W B W W B B W B B B B W YES B W W W W W W W W W B W B B B B W W W B W W W W B B B B W W B W W W W W W W W W W W B W B B ...
result:
ok ok (10000 test cases)
Test #11:
score: 0
Accepted
time: 34ms
memory: 3712kb
input:
1000 100 10 WWWB?WWW?W W????????W WB?W??WW?W WBB?WWW??B ?WWWW?WW?W ?WWWW?W?WB ?B??W?W??? WW?W?BWWW? WW?B?W?W?W ????WW??W? BWB??WWWW? W??W??WW?? W?WBB??WWW ?WWBBWW?WW ?WBWW?B??? ???WWW???W ??WW?WWW?? ????W?BW?W ???W?W?W?W ?WW?WW?WB? BW??WW?WW? WB?WWWWW?W ??BWW??W?W W??B?WWWW? WWW?W??WWW BBBW??W?W? ??...
output:
NO NO NO NO NO NO NO YES WBWWWWWBWW WBWBWWWWWW WBWWWWWBWW WWWWWWWBBB BBBWBWWWWB WWWWWWWBWW WWWWBWWWWW WBWWWWWBWW WWWBBWWWWW BWWWBBWWWB BWWWBBBBBB BBWWWWWWWW BWWWWBBWBW WWWWWWWWWW WWWWBWBWWW WWWBBWWWWB WWWBWWWWBB WWWWWWWWBW WWWBWWWWWW WWWWWBWWBW BBBWWWWWWW WWWWWWWBBB WWWBWBWWWW WWWWWWWWWB WBWWWWWBWW ...
result:
ok ok (1000 test cases)
Test #12:
score: -100
Time Limit Exceeded
input:
1000 10 100 BBWB??W??B?BWB?BBB??WWWW?B???WBB??WW???WWBW?B??W??BW?BWBBBW?BWBW?WBW?B?WWB??B?B?BBWWWBBBBW?BB???B?WB ??????WWWBWBBB??W??WW??BWBW??W??????WWWB?B??B?????W?B?????W??BBBBWBW??BWWWB???WBWB?BB?WW?B????W?WWB? WB?BBBW?B??BB?WWW?B??WBB??W?BBW??BB??BB???BB??B??WB??W?B?B?WWWWW?BB??W?W?WBB??B?WWBBB?...