#include <bits/stdc++.h>
// #include "grader.cpp"
using namespace std;
const int N = 2e5 + 10;
const int K = 105;
int pref[N], suff[N];
int need_pref[K], need_suff[K];
// std::string solve_puzzle(std::string s, std::vector<int> c){
// int n = s.length();
// int k = c.size();
// std::string ans = s;
// int sz = c[0];
// for (int i=0; i<n; i++)
// ans[i] = '?';
// int l = n - sz;
// int r = sz - 1;
// for (int i=l; i<=r; i++)
// ans[i] = 'X';
// return ans;
// }
string solve_puzzle(string s, vector<int> c){
int n = s.size();
int k = c.size();
string ans = s;
need_pref[0] = -2;
for (int i=0; i<k; i++){
int blacks = c[i];
int available = 0;
for (int j=need_pref[i] + 2; j<n; j++){
available += (s[j] == '.');
if (available == blacks){
need_pref[i + 1] = j;
break;
}
if (s[j] == '_')
available = 0;
}
}
for (int i=0; i<n; i++){
for (int j=0; j<=k; j++){
if (need_pref[j] > i)
break;
pref[i] = j;
}
}
need_suff[k] = n + 1;
for (int i=k - 1; i >= 0; i--){
int blacks = c[i];
int available = 0;
for (int j=need_suff[i + 1] - 2; j >= 0; j--){
available += (s[j] == '.');
if (available == blacks){
need_suff[i] = j;
break;
}
if (s[j] == '_')
available = 0;
}
}
for (int i=n-1; i>=0; i--){
for (int j=k; j>=0; j--){
if (need_suff[j] < i)
break;
suff[i] = k - j;
}
}
for (int i=0; i<n; i++){
if (s[i] != '.') continue;
// is this character always black or never black.
// If I make it white, is the puzzle still solvable?
bool can_be_white = 0;
int put_in_pref = 0;
for (int j=0; j<=k; j++){
if (need_pref[j] >= i)
break;
put_in_pref = j;
}
can_be_white = (need_suff[put_in_pref] > i);
if (!can_be_white){
ans[i] = 'X';
continue;
}
bool can_be_black = 0;
int l = i;
int r = i;
for (int j=i+1; j<n; j++){
if (s[j] != '.')
break;
r++;
}
for (int j=i-1; j>=0; j--){
if (s[j] != '.')
break;
l--;
}
for (int j=0; j<k; j++){
for (int st = l; st <= i; st++){
int en = st + c[j] - 1;
if (en < i)
continue;
if (en > r)
continue;
if (need_pref[j] < (st - 1) && need_suff[j + 1] > (en + 1))
can_be_black = 1;
}
}
if (can_be_black)
ans[i] = '?';
else
ans[i] = '_';
}
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
n = 13, m = 1 |
2 |
Correct |
0 ms |
348 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
348 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
348 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
n = 13, m = 1 |
2 |
Correct |
0 ms |
348 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
348 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
348 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
8 |
Correct |
0 ms |
348 KB |
n = 20, m = 5 |
9 |
Correct |
0 ms |
348 KB |
n = 18, m = 3 |
10 |
Correct |
0 ms |
348 KB |
n = 17, m = 2 |
11 |
Correct |
0 ms |
348 KB |
n = 20, m = 2 |
12 |
Correct |
0 ms |
348 KB |
n = 17, m = 4 |
13 |
Correct |
0 ms |
348 KB |
n = 17, m = 6 |
14 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
15 |
Correct |
0 ms |
348 KB |
n = 17, m = 4 |
16 |
Correct |
0 ms |
348 KB |
n = 13, m = 3 |
17 |
Correct |
0 ms |
344 KB |
n = 18, m = 4 |
18 |
Correct |
0 ms |
348 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
348 KB |
n = 19, m = 10 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
n = 13, m = 1 |
2 |
Correct |
0 ms |
348 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
348 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
348 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
8 |
Correct |
0 ms |
348 KB |
n = 20, m = 5 |
9 |
Correct |
0 ms |
348 KB |
n = 18, m = 3 |
10 |
Correct |
0 ms |
348 KB |
n = 17, m = 2 |
11 |
Correct |
0 ms |
348 KB |
n = 20, m = 2 |
12 |
Correct |
0 ms |
348 KB |
n = 17, m = 4 |
13 |
Correct |
0 ms |
348 KB |
n = 17, m = 6 |
14 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
15 |
Correct |
0 ms |
348 KB |
n = 17, m = 4 |
16 |
Correct |
0 ms |
348 KB |
n = 13, m = 3 |
17 |
Correct |
0 ms |
344 KB |
n = 18, m = 4 |
18 |
Correct |
0 ms |
348 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
348 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
348 KB |
n = 100, m = 5 |
21 |
Correct |
0 ms |
348 KB |
n = 90, m = 3 |
22 |
Correct |
0 ms |
372 KB |
n = 86, m = 2 |
23 |
Correct |
0 ms |
348 KB |
n = 81, m = 4 |
24 |
Correct |
0 ms |
348 KB |
n = 89, m = 10 |
25 |
Correct |
0 ms |
348 KB |
n = 81, m = 23 |
26 |
Correct |
0 ms |
348 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
600 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
348 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
348 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
436 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
348 KB |
n = 99, m = 50 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
n = 13, m = 1 |
2 |
Correct |
0 ms |
348 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
348 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
348 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
8 |
Correct |
0 ms |
348 KB |
n = 20, m = 5 |
9 |
Correct |
0 ms |
348 KB |
n = 18, m = 3 |
10 |
Correct |
0 ms |
348 KB |
n = 17, m = 2 |
11 |
Correct |
0 ms |
348 KB |
n = 20, m = 2 |
12 |
Correct |
0 ms |
348 KB |
n = 17, m = 4 |
13 |
Correct |
0 ms |
348 KB |
n = 17, m = 6 |
14 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
15 |
Correct |
0 ms |
348 KB |
n = 17, m = 4 |
16 |
Correct |
0 ms |
348 KB |
n = 13, m = 3 |
17 |
Correct |
0 ms |
344 KB |
n = 18, m = 4 |
18 |
Correct |
0 ms |
348 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
348 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
348 KB |
n = 100, m = 5 |
21 |
Correct |
0 ms |
348 KB |
n = 90, m = 3 |
22 |
Correct |
0 ms |
372 KB |
n = 86, m = 2 |
23 |
Correct |
0 ms |
348 KB |
n = 81, m = 4 |
24 |
Correct |
0 ms |
348 KB |
n = 89, m = 10 |
25 |
Correct |
0 ms |
348 KB |
n = 81, m = 23 |
26 |
Correct |
0 ms |
348 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
600 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
348 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
348 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
436 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
348 KB |
n = 99, m = 50 |
32 |
Correct |
0 ms |
348 KB |
n = 13, m = 4 |
33 |
Correct |
0 ms |
348 KB |
n = 86, m = 2 |
34 |
Correct |
0 ms |
348 KB |
n = 88, m = 2 |
35 |
Correct |
0 ms |
348 KB |
n = 86, m = 2 |
36 |
Correct |
1 ms |
600 KB |
n = 81, m = 6 |
37 |
Correct |
1 ms |
344 KB |
n = 98, m = 7 |
38 |
Correct |
0 ms |
348 KB |
n = 92, m = 7 |
39 |
Correct |
0 ms |
348 KB |
n = 88, m = 21 |
40 |
Correct |
0 ms |
348 KB |
n = 90, m = 21 |
41 |
Correct |
1 ms |
348 KB |
n = 98, m = 22 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
n = 13, m = 1 |
2 |
Correct |
0 ms |
348 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
348 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
348 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
8 |
Correct |
0 ms |
348 KB |
n = 20, m = 5 |
9 |
Correct |
0 ms |
348 KB |
n = 18, m = 3 |
10 |
Correct |
0 ms |
348 KB |
n = 17, m = 2 |
11 |
Correct |
0 ms |
348 KB |
n = 20, m = 2 |
12 |
Correct |
0 ms |
348 KB |
n = 17, m = 4 |
13 |
Correct |
0 ms |
348 KB |
n = 17, m = 6 |
14 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
15 |
Correct |
0 ms |
348 KB |
n = 17, m = 4 |
16 |
Correct |
0 ms |
348 KB |
n = 13, m = 3 |
17 |
Correct |
0 ms |
344 KB |
n = 18, m = 4 |
18 |
Correct |
0 ms |
348 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
348 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
348 KB |
n = 100, m = 5 |
21 |
Correct |
0 ms |
348 KB |
n = 90, m = 3 |
22 |
Correct |
0 ms |
372 KB |
n = 86, m = 2 |
23 |
Correct |
0 ms |
348 KB |
n = 81, m = 4 |
24 |
Correct |
0 ms |
348 KB |
n = 89, m = 10 |
25 |
Correct |
0 ms |
348 KB |
n = 81, m = 23 |
26 |
Correct |
0 ms |
348 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
600 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
348 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
348 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
436 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
348 KB |
n = 99, m = 50 |
32 |
Correct |
0 ms |
348 KB |
n = 13, m = 4 |
33 |
Correct |
0 ms |
348 KB |
n = 86, m = 2 |
34 |
Correct |
0 ms |
348 KB |
n = 88, m = 2 |
35 |
Correct |
0 ms |
348 KB |
n = 86, m = 2 |
36 |
Correct |
1 ms |
600 KB |
n = 81, m = 6 |
37 |
Correct |
1 ms |
344 KB |
n = 98, m = 7 |
38 |
Correct |
0 ms |
348 KB |
n = 92, m = 7 |
39 |
Correct |
0 ms |
348 KB |
n = 88, m = 21 |
40 |
Correct |
0 ms |
348 KB |
n = 90, m = 21 |
41 |
Correct |
1 ms |
348 KB |
n = 98, m = 22 |
42 |
Incorrect |
0 ms |
348 KB |
char #6 differ - expected: 'X', found: '?' |
43 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
n = 13, m = 1 |
2 |
Correct |
0 ms |
348 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
348 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
348 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
8 |
Correct |
0 ms |
348 KB |
n = 20, m = 5 |
9 |
Correct |
0 ms |
348 KB |
n = 18, m = 3 |
10 |
Correct |
0 ms |
348 KB |
n = 17, m = 2 |
11 |
Correct |
0 ms |
348 KB |
n = 20, m = 2 |
12 |
Correct |
0 ms |
348 KB |
n = 17, m = 4 |
13 |
Correct |
0 ms |
348 KB |
n = 17, m = 6 |
14 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
15 |
Correct |
0 ms |
348 KB |
n = 17, m = 4 |
16 |
Correct |
0 ms |
348 KB |
n = 13, m = 3 |
17 |
Correct |
0 ms |
344 KB |
n = 18, m = 4 |
18 |
Correct |
0 ms |
348 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
348 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
348 KB |
n = 100, m = 5 |
21 |
Correct |
0 ms |
348 KB |
n = 90, m = 3 |
22 |
Correct |
0 ms |
372 KB |
n = 86, m = 2 |
23 |
Correct |
0 ms |
348 KB |
n = 81, m = 4 |
24 |
Correct |
0 ms |
348 KB |
n = 89, m = 10 |
25 |
Correct |
0 ms |
348 KB |
n = 81, m = 23 |
26 |
Correct |
0 ms |
348 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
600 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
348 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
348 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
436 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
348 KB |
n = 99, m = 50 |
32 |
Correct |
0 ms |
348 KB |
n = 13, m = 4 |
33 |
Correct |
0 ms |
348 KB |
n = 86, m = 2 |
34 |
Correct |
0 ms |
348 KB |
n = 88, m = 2 |
35 |
Correct |
0 ms |
348 KB |
n = 86, m = 2 |
36 |
Correct |
1 ms |
600 KB |
n = 81, m = 6 |
37 |
Correct |
1 ms |
344 KB |
n = 98, m = 7 |
38 |
Correct |
0 ms |
348 KB |
n = 92, m = 7 |
39 |
Correct |
0 ms |
348 KB |
n = 88, m = 21 |
40 |
Correct |
0 ms |
348 KB |
n = 90, m = 21 |
41 |
Correct |
1 ms |
348 KB |
n = 98, m = 22 |
42 |
Incorrect |
0 ms |
348 KB |
char #6 differ - expected: 'X', found: '?' |
43 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
n = 13, m = 1 |
2 |
Correct |
0 ms |
348 KB |
n = 18, m = 1 |
3 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
4 |
Correct |
0 ms |
348 KB |
n = 1, m = 1 |
5 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
348 KB |
n = 20, m = 1 |
7 |
Correct |
0 ms |
348 KB |
n = 20, m = 1 |
8 |
Correct |
0 ms |
348 KB |
n = 20, m = 5 |
9 |
Correct |
0 ms |
348 KB |
n = 18, m = 3 |
10 |
Correct |
0 ms |
348 KB |
n = 17, m = 2 |
11 |
Correct |
0 ms |
348 KB |
n = 20, m = 2 |
12 |
Correct |
0 ms |
348 KB |
n = 17, m = 4 |
13 |
Correct |
0 ms |
348 KB |
n = 17, m = 6 |
14 |
Correct |
0 ms |
348 KB |
n = 17, m = 1 |
15 |
Correct |
0 ms |
348 KB |
n = 17, m = 4 |
16 |
Correct |
0 ms |
348 KB |
n = 13, m = 3 |
17 |
Correct |
0 ms |
344 KB |
n = 18, m = 4 |
18 |
Correct |
0 ms |
348 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
348 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
348 KB |
n = 100, m = 5 |
21 |
Correct |
0 ms |
348 KB |
n = 90, m = 3 |
22 |
Correct |
0 ms |
372 KB |
n = 86, m = 2 |
23 |
Correct |
0 ms |
348 KB |
n = 81, m = 4 |
24 |
Correct |
0 ms |
348 KB |
n = 89, m = 10 |
25 |
Correct |
0 ms |
348 KB |
n = 81, m = 23 |
26 |
Correct |
0 ms |
348 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
600 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
348 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
348 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
436 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
348 KB |
n = 99, m = 50 |
32 |
Correct |
0 ms |
348 KB |
n = 13, m = 4 |
33 |
Correct |
0 ms |
348 KB |
n = 86, m = 2 |
34 |
Correct |
0 ms |
348 KB |
n = 88, m = 2 |
35 |
Correct |
0 ms |
348 KB |
n = 86, m = 2 |
36 |
Correct |
1 ms |
600 KB |
n = 81, m = 6 |
37 |
Correct |
1 ms |
344 KB |
n = 98, m = 7 |
38 |
Correct |
0 ms |
348 KB |
n = 92, m = 7 |
39 |
Correct |
0 ms |
348 KB |
n = 88, m = 21 |
40 |
Correct |
0 ms |
348 KB |
n = 90, m = 21 |
41 |
Correct |
1 ms |
348 KB |
n = 98, m = 22 |
42 |
Incorrect |
0 ms |
348 KB |
char #6 differ - expected: 'X', found: '?' |
43 |
Halted |
0 ms |
0 KB |
- |