#include <bits/stdc++.h>
using namespace std;
char s[200007];
vector<int> c;
string ans;
bool pref[200007][107],li[200007][107];
bool suff[200007][107],li2[200007][107];
bool white,black;
int sum[200007],n,k;
bool ff(int pos,int k){
if(k==-1)return true;
else if(pos<=0)return false;
if(li[pos][k])return pref[pos][k];
li[pos][k]=true;
pref[pos][k]=ff(pos-1,k);
if(pos>=c[k] and sum[pos]-sum[pos-c[k]]==0 and s[pos-c[k]]!='X' and ff(pos-c[k]-1,k-1)){
pref[pos][k]=true;
}
return pref[pos][k];
}
bool ff2(int pos,int k){
if(k==c.size())return true;
else if(pos>=n+1)return false;
if(li2[pos][k])return suff[pos][k];
li2[pos][k]=true;
suff[pos][k]=ff2(pos+1,k);
if(pos+c[k]-1<=n and sum[pos+c[k]-1]-sum[pos-1]==0 and s[pos+c[k]]!='X' and ff2(pos+c[k]+1,k+1)){
suff[pos][k]=true;
}
return suff[pos][k];
}
string solve_puzzle(string S, vector<int> C){
c=C; n=int(S.size()); k=int(C.size());
for(int i=1;i<=n;i++){
s[i]=S[i-1]; sum[i]=sum[i-1];
if(s[i]=='_')sum[i]++;
}
for(int i=1;i<=n;i++){
if(s[i]!='.'){
ans.push_back(s[i]); continue;
}
white=black=false;
for(int f=-1;f<k;f++){
if(ff(i-1,f) and ff2(i+1,f+1))white=true;
}
for(int f=0;f<=k;f++){
for(int t=max(i-c[f]+1,1);t<=i;t++){
if(sum[t+c[f]-1]-sum[t-1]!=0 or s[t-1]=='X' or s[t+c[f]]=='X')continue;
if(ff(t-2,f-1) and ff2(t+c[f]+1,f+1))black=true;
}
}
if(white and black)ans.push_back('?');
if(!white and black)ans.push_back('X');
if(white and !black)ans.push_back('_');
}
return ans;
}
Compilation message
paint.cpp: In function 'bool ff2(int, int)':
paint.cpp:29:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
29 | if(k==c.size())return true;
| ~^~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
340 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
212 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
340 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
340 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
212 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
340 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
8 |
Correct |
0 ms |
340 KB |
n = 20, m = 5 |
9 |
Correct |
0 ms |
340 KB |
n = 18, m = 3 |
10 |
Correct |
1 ms |
340 KB |
n = 17, m = 2 |
11 |
Correct |
1 ms |
340 KB |
n = 20, m = 2 |
12 |
Correct |
0 ms |
340 KB |
n = 17, m = 4 |
13 |
Correct |
0 ms |
340 KB |
n = 17, m = 6 |
14 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
15 |
Correct |
0 ms |
340 KB |
n = 17, m = 4 |
16 |
Correct |
1 ms |
340 KB |
n = 13, m = 3 |
17 |
Correct |
0 ms |
340 KB |
n = 18, m = 4 |
18 |
Correct |
0 ms |
340 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
340 KB |
n = 19, m = 10 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
340 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
212 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
340 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
8 |
Correct |
0 ms |
340 KB |
n = 20, m = 5 |
9 |
Correct |
0 ms |
340 KB |
n = 18, m = 3 |
10 |
Correct |
1 ms |
340 KB |
n = 17, m = 2 |
11 |
Correct |
1 ms |
340 KB |
n = 20, m = 2 |
12 |
Correct |
0 ms |
340 KB |
n = 17, m = 4 |
13 |
Correct |
0 ms |
340 KB |
n = 17, m = 6 |
14 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
15 |
Correct |
0 ms |
340 KB |
n = 17, m = 4 |
16 |
Correct |
1 ms |
340 KB |
n = 13, m = 3 |
17 |
Correct |
0 ms |
340 KB |
n = 18, m = 4 |
18 |
Correct |
0 ms |
340 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
340 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
340 KB |
n = 100, m = 5 |
21 |
Correct |
1 ms |
340 KB |
n = 90, m = 3 |
22 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
23 |
Correct |
1 ms |
340 KB |
n = 81, m = 4 |
24 |
Correct |
1 ms |
340 KB |
n = 89, m = 10 |
25 |
Correct |
1 ms |
340 KB |
n = 81, m = 23 |
26 |
Correct |
1 ms |
340 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
340 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
340 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
340 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
340 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
340 KB |
n = 99, m = 50 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
340 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
212 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
340 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
8 |
Correct |
0 ms |
340 KB |
n = 20, m = 5 |
9 |
Correct |
0 ms |
340 KB |
n = 18, m = 3 |
10 |
Correct |
1 ms |
340 KB |
n = 17, m = 2 |
11 |
Correct |
1 ms |
340 KB |
n = 20, m = 2 |
12 |
Correct |
0 ms |
340 KB |
n = 17, m = 4 |
13 |
Correct |
0 ms |
340 KB |
n = 17, m = 6 |
14 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
15 |
Correct |
0 ms |
340 KB |
n = 17, m = 4 |
16 |
Correct |
1 ms |
340 KB |
n = 13, m = 3 |
17 |
Correct |
0 ms |
340 KB |
n = 18, m = 4 |
18 |
Correct |
0 ms |
340 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
340 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
340 KB |
n = 100, m = 5 |
21 |
Correct |
1 ms |
340 KB |
n = 90, m = 3 |
22 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
23 |
Correct |
1 ms |
340 KB |
n = 81, m = 4 |
24 |
Correct |
1 ms |
340 KB |
n = 89, m = 10 |
25 |
Correct |
1 ms |
340 KB |
n = 81, m = 23 |
26 |
Correct |
1 ms |
340 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
340 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
340 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
340 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
340 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
340 KB |
n = 99, m = 50 |
32 |
Correct |
0 ms |
340 KB |
n = 13, m = 4 |
33 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
34 |
Correct |
1 ms |
340 KB |
n = 88, m = 2 |
35 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
36 |
Correct |
1 ms |
340 KB |
n = 81, m = 6 |
37 |
Correct |
1 ms |
340 KB |
n = 98, m = 7 |
38 |
Correct |
1 ms |
340 KB |
n = 92, m = 7 |
39 |
Correct |
1 ms |
340 KB |
n = 88, m = 21 |
40 |
Correct |
1 ms |
340 KB |
n = 90, m = 21 |
41 |
Correct |
1 ms |
340 KB |
n = 98, m = 22 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
340 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
212 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
340 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
8 |
Correct |
0 ms |
340 KB |
n = 20, m = 5 |
9 |
Correct |
0 ms |
340 KB |
n = 18, m = 3 |
10 |
Correct |
1 ms |
340 KB |
n = 17, m = 2 |
11 |
Correct |
1 ms |
340 KB |
n = 20, m = 2 |
12 |
Correct |
0 ms |
340 KB |
n = 17, m = 4 |
13 |
Correct |
0 ms |
340 KB |
n = 17, m = 6 |
14 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
15 |
Correct |
0 ms |
340 KB |
n = 17, m = 4 |
16 |
Correct |
1 ms |
340 KB |
n = 13, m = 3 |
17 |
Correct |
0 ms |
340 KB |
n = 18, m = 4 |
18 |
Correct |
0 ms |
340 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
340 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
340 KB |
n = 100, m = 5 |
21 |
Correct |
1 ms |
340 KB |
n = 90, m = 3 |
22 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
23 |
Correct |
1 ms |
340 KB |
n = 81, m = 4 |
24 |
Correct |
1 ms |
340 KB |
n = 89, m = 10 |
25 |
Correct |
1 ms |
340 KB |
n = 81, m = 23 |
26 |
Correct |
1 ms |
340 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
340 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
340 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
340 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
340 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
340 KB |
n = 99, m = 50 |
32 |
Correct |
0 ms |
340 KB |
n = 13, m = 4 |
33 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
34 |
Correct |
1 ms |
340 KB |
n = 88, m = 2 |
35 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
36 |
Correct |
1 ms |
340 KB |
n = 81, m = 6 |
37 |
Correct |
1 ms |
340 KB |
n = 98, m = 7 |
38 |
Correct |
1 ms |
340 KB |
n = 92, m = 7 |
39 |
Correct |
1 ms |
340 KB |
n = 88, m = 21 |
40 |
Correct |
1 ms |
340 KB |
n = 90, m = 21 |
41 |
Correct |
1 ms |
340 KB |
n = 98, m = 22 |
42 |
Incorrect |
1 ms |
340 KB |
char #6 differ - expected: 'X', found: '?' |
43 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
340 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
212 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
340 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
8 |
Correct |
0 ms |
340 KB |
n = 20, m = 5 |
9 |
Correct |
0 ms |
340 KB |
n = 18, m = 3 |
10 |
Correct |
1 ms |
340 KB |
n = 17, m = 2 |
11 |
Correct |
1 ms |
340 KB |
n = 20, m = 2 |
12 |
Correct |
0 ms |
340 KB |
n = 17, m = 4 |
13 |
Correct |
0 ms |
340 KB |
n = 17, m = 6 |
14 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
15 |
Correct |
0 ms |
340 KB |
n = 17, m = 4 |
16 |
Correct |
1 ms |
340 KB |
n = 13, m = 3 |
17 |
Correct |
0 ms |
340 KB |
n = 18, m = 4 |
18 |
Correct |
0 ms |
340 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
340 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
340 KB |
n = 100, m = 5 |
21 |
Correct |
1 ms |
340 KB |
n = 90, m = 3 |
22 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
23 |
Correct |
1 ms |
340 KB |
n = 81, m = 4 |
24 |
Correct |
1 ms |
340 KB |
n = 89, m = 10 |
25 |
Correct |
1 ms |
340 KB |
n = 81, m = 23 |
26 |
Correct |
1 ms |
340 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
340 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
340 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
340 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
340 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
340 KB |
n = 99, m = 50 |
32 |
Correct |
0 ms |
340 KB |
n = 13, m = 4 |
33 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
34 |
Correct |
1 ms |
340 KB |
n = 88, m = 2 |
35 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
36 |
Correct |
1 ms |
340 KB |
n = 81, m = 6 |
37 |
Correct |
1 ms |
340 KB |
n = 98, m = 7 |
38 |
Correct |
1 ms |
340 KB |
n = 92, m = 7 |
39 |
Correct |
1 ms |
340 KB |
n = 88, m = 21 |
40 |
Correct |
1 ms |
340 KB |
n = 90, m = 21 |
41 |
Correct |
1 ms |
340 KB |
n = 98, m = 22 |
42 |
Incorrect |
1 ms |
340 KB |
char #6 differ - expected: 'X', found: '?' |
43 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
340 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
212 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
340 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
340 KB |
n = 20, m = 1 |
8 |
Correct |
0 ms |
340 KB |
n = 20, m = 5 |
9 |
Correct |
0 ms |
340 KB |
n = 18, m = 3 |
10 |
Correct |
1 ms |
340 KB |
n = 17, m = 2 |
11 |
Correct |
1 ms |
340 KB |
n = 20, m = 2 |
12 |
Correct |
0 ms |
340 KB |
n = 17, m = 4 |
13 |
Correct |
0 ms |
340 KB |
n = 17, m = 6 |
14 |
Correct |
0 ms |
340 KB |
n = 17, m = 1 |
15 |
Correct |
0 ms |
340 KB |
n = 17, m = 4 |
16 |
Correct |
1 ms |
340 KB |
n = 13, m = 3 |
17 |
Correct |
0 ms |
340 KB |
n = 18, m = 4 |
18 |
Correct |
0 ms |
340 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
340 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
340 KB |
n = 100, m = 5 |
21 |
Correct |
1 ms |
340 KB |
n = 90, m = 3 |
22 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
23 |
Correct |
1 ms |
340 KB |
n = 81, m = 4 |
24 |
Correct |
1 ms |
340 KB |
n = 89, m = 10 |
25 |
Correct |
1 ms |
340 KB |
n = 81, m = 23 |
26 |
Correct |
1 ms |
340 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
340 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
340 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
340 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
340 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
340 KB |
n = 99, m = 50 |
32 |
Correct |
0 ms |
340 KB |
n = 13, m = 4 |
33 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
34 |
Correct |
1 ms |
340 KB |
n = 88, m = 2 |
35 |
Correct |
1 ms |
340 KB |
n = 86, m = 2 |
36 |
Correct |
1 ms |
340 KB |
n = 81, m = 6 |
37 |
Correct |
1 ms |
340 KB |
n = 98, m = 7 |
38 |
Correct |
1 ms |
340 KB |
n = 92, m = 7 |
39 |
Correct |
1 ms |
340 KB |
n = 88, m = 21 |
40 |
Correct |
1 ms |
340 KB |
n = 90, m = 21 |
41 |
Correct |
1 ms |
340 KB |
n = 98, m = 22 |
42 |
Incorrect |
1 ms |
340 KB |
char #6 differ - expected: 'X', found: '?' |
43 |
Halted |
0 ms |
0 KB |
- |