#include "paint.h"
#include <cstdlib>
#include <vector>
#include <bitset>
#include <iostream>
using namespace std;
int n, k;
int pref[200010], lastBlack;
bitset<200010> dp[110];
string ans;
string solve_puzzle(string s, std::vector<int> c) {
lastBlack = -1;
int n = s.size();
ans = s;
s = "." + s;
for(int i = 1; i <= n; i++) {
pref[i] = pref[i - 1] + (s[i] == '_');
if(s[i] == 'X') lastBlack = i;
}
k = c.size();
for(int j = k - 1; j >= 0; j--){
for(int i = 1; i <= n - c[j] + 1; i++) {
if(s[i] == '_') dp[j][i] = false;
if(s[i - 1] == 'X') dp[j][i] = false;
// if(j == 1 && i == 7) cerr << pref[i + c[j] - 1] - pref[i - 1] << " " << s[i + c[j]] << " " << dp[j + 1][i + c[j] + 1] << "\n";
if(pref[i + c[j] - 1] - pref[i - 1] == 0 && (i == n - c[j] + 1 || s[i + c[j]] != 'X')) {
if(j == k - 1) dp[j][i] = lastBlack <= i + c[j] - 1;
else dp[j][i] = dp[j + 1][i + c[j] + 1];
}
}
}
int first = 1;
for(int j = 0; j < k; j++){
for(int i = 1; i <= n; i++) pref[i] = 0;
int ct = 0;
int nxt = -1;
for(int i = first; i <= n - c[j] + 1; i++) {
if(j == 0 && s[i - 1] == 'X') break;
if(dp[j][i]) pref[i]++, pref[i + c[j]]--, ct++;
if(dp[j][i] && nxt == -1) nxt = i;
// cerr << j << " " << i << ": " << dp[j][i] << "\n";
}
for(int i = 1; i <= n; i++) pref[i] += pref[i - 1];
for(int i = first; i <= n; i++){
if(pref[i] == ct) ans[i - 1] = 'X';
else if (pref[i] > 0) ans[i - 1] = '?';
else ans[i - 1] = '_';
// if(j == 0) cerr << i << ": " << pref[i] << "\n";
}
first = nxt + c[j] + 1;
}
for(int i = 0; i < n; i++) if(ans[i] == '.') ans[i] = '_';
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
364 KB |
n = 18, m = 1 |
3 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
4 |
Correct |
1 ms |
364 KB |
n = 1, m = 1 |
5 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
7 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
364 KB |
n = 18, m = 1 |
3 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
4 |
Correct |
1 ms |
364 KB |
n = 1, m = 1 |
5 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
7 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
8 |
Correct |
1 ms |
364 KB |
n = 20, m = 5 |
9 |
Correct |
1 ms |
364 KB |
n = 18, m = 3 |
10 |
Correct |
1 ms |
364 KB |
n = 17, m = 2 |
11 |
Correct |
1 ms |
364 KB |
n = 20, m = 2 |
12 |
Correct |
1 ms |
364 KB |
n = 17, m = 4 |
13 |
Correct |
1 ms |
384 KB |
n = 17, m = 6 |
14 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
15 |
Correct |
1 ms |
364 KB |
n = 17, m = 4 |
16 |
Correct |
1 ms |
384 KB |
n = 13, m = 3 |
17 |
Correct |
1 ms |
364 KB |
n = 18, m = 4 |
18 |
Correct |
1 ms |
364 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
384 KB |
n = 19, m = 10 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
364 KB |
n = 18, m = 1 |
3 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
4 |
Correct |
1 ms |
364 KB |
n = 1, m = 1 |
5 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
7 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
8 |
Correct |
1 ms |
364 KB |
n = 20, m = 5 |
9 |
Correct |
1 ms |
364 KB |
n = 18, m = 3 |
10 |
Correct |
1 ms |
364 KB |
n = 17, m = 2 |
11 |
Correct |
1 ms |
364 KB |
n = 20, m = 2 |
12 |
Correct |
1 ms |
364 KB |
n = 17, m = 4 |
13 |
Correct |
1 ms |
384 KB |
n = 17, m = 6 |
14 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
15 |
Correct |
1 ms |
364 KB |
n = 17, m = 4 |
16 |
Correct |
1 ms |
384 KB |
n = 13, m = 3 |
17 |
Correct |
1 ms |
364 KB |
n = 18, m = 4 |
18 |
Correct |
1 ms |
364 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
384 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
492 KB |
n = 100, m = 5 |
21 |
Correct |
1 ms |
364 KB |
n = 90, m = 3 |
22 |
Correct |
1 ms |
364 KB |
n = 86, m = 2 |
23 |
Correct |
1 ms |
364 KB |
n = 81, m = 4 |
24 |
Correct |
1 ms |
364 KB |
n = 89, m = 10 |
25 |
Correct |
1 ms |
364 KB |
n = 81, m = 23 |
26 |
Correct |
1 ms |
364 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
364 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
492 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
492 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
492 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
492 KB |
n = 99, m = 50 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
364 KB |
n = 18, m = 1 |
3 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
4 |
Correct |
1 ms |
364 KB |
n = 1, m = 1 |
5 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
7 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
8 |
Correct |
1 ms |
364 KB |
n = 20, m = 5 |
9 |
Correct |
1 ms |
364 KB |
n = 18, m = 3 |
10 |
Correct |
1 ms |
364 KB |
n = 17, m = 2 |
11 |
Correct |
1 ms |
364 KB |
n = 20, m = 2 |
12 |
Correct |
1 ms |
364 KB |
n = 17, m = 4 |
13 |
Correct |
1 ms |
384 KB |
n = 17, m = 6 |
14 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
15 |
Correct |
1 ms |
364 KB |
n = 17, m = 4 |
16 |
Correct |
1 ms |
384 KB |
n = 13, m = 3 |
17 |
Correct |
1 ms |
364 KB |
n = 18, m = 4 |
18 |
Correct |
1 ms |
364 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
384 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
492 KB |
n = 100, m = 5 |
21 |
Correct |
1 ms |
364 KB |
n = 90, m = 3 |
22 |
Correct |
1 ms |
364 KB |
n = 86, m = 2 |
23 |
Correct |
1 ms |
364 KB |
n = 81, m = 4 |
24 |
Correct |
1 ms |
364 KB |
n = 89, m = 10 |
25 |
Correct |
1 ms |
364 KB |
n = 81, m = 23 |
26 |
Correct |
1 ms |
364 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
364 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
492 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
492 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
492 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
492 KB |
n = 99, m = 50 |
32 |
Incorrect |
1 ms |
364 KB |
char #0 differ - expected: '?', found: '_' |
33 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
364 KB |
n = 18, m = 1 |
3 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
4 |
Correct |
1 ms |
364 KB |
n = 1, m = 1 |
5 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
7 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
8 |
Correct |
1 ms |
364 KB |
n = 20, m = 5 |
9 |
Correct |
1 ms |
364 KB |
n = 18, m = 3 |
10 |
Correct |
1 ms |
364 KB |
n = 17, m = 2 |
11 |
Correct |
1 ms |
364 KB |
n = 20, m = 2 |
12 |
Correct |
1 ms |
364 KB |
n = 17, m = 4 |
13 |
Correct |
1 ms |
384 KB |
n = 17, m = 6 |
14 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
15 |
Correct |
1 ms |
364 KB |
n = 17, m = 4 |
16 |
Correct |
1 ms |
384 KB |
n = 13, m = 3 |
17 |
Correct |
1 ms |
364 KB |
n = 18, m = 4 |
18 |
Correct |
1 ms |
364 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
384 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
492 KB |
n = 100, m = 5 |
21 |
Correct |
1 ms |
364 KB |
n = 90, m = 3 |
22 |
Correct |
1 ms |
364 KB |
n = 86, m = 2 |
23 |
Correct |
1 ms |
364 KB |
n = 81, m = 4 |
24 |
Correct |
1 ms |
364 KB |
n = 89, m = 10 |
25 |
Correct |
1 ms |
364 KB |
n = 81, m = 23 |
26 |
Correct |
1 ms |
364 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
364 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
492 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
492 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
492 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
492 KB |
n = 99, m = 50 |
32 |
Incorrect |
1 ms |
364 KB |
char #0 differ - expected: '?', found: '_' |
33 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
364 KB |
n = 18, m = 1 |
3 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
4 |
Correct |
1 ms |
364 KB |
n = 1, m = 1 |
5 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
7 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
8 |
Correct |
1 ms |
364 KB |
n = 20, m = 5 |
9 |
Correct |
1 ms |
364 KB |
n = 18, m = 3 |
10 |
Correct |
1 ms |
364 KB |
n = 17, m = 2 |
11 |
Correct |
1 ms |
364 KB |
n = 20, m = 2 |
12 |
Correct |
1 ms |
364 KB |
n = 17, m = 4 |
13 |
Correct |
1 ms |
384 KB |
n = 17, m = 6 |
14 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
15 |
Correct |
1 ms |
364 KB |
n = 17, m = 4 |
16 |
Correct |
1 ms |
384 KB |
n = 13, m = 3 |
17 |
Correct |
1 ms |
364 KB |
n = 18, m = 4 |
18 |
Correct |
1 ms |
364 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
384 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
492 KB |
n = 100, m = 5 |
21 |
Correct |
1 ms |
364 KB |
n = 90, m = 3 |
22 |
Correct |
1 ms |
364 KB |
n = 86, m = 2 |
23 |
Correct |
1 ms |
364 KB |
n = 81, m = 4 |
24 |
Correct |
1 ms |
364 KB |
n = 89, m = 10 |
25 |
Correct |
1 ms |
364 KB |
n = 81, m = 23 |
26 |
Correct |
1 ms |
364 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
364 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
492 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
492 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
492 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
492 KB |
n = 99, m = 50 |
32 |
Incorrect |
1 ms |
364 KB |
char #0 differ - expected: '?', found: '_' |
33 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
n = 13, m = 1 |
2 |
Correct |
1 ms |
364 KB |
n = 18, m = 1 |
3 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
4 |
Correct |
1 ms |
364 KB |
n = 1, m = 1 |
5 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
6 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
7 |
Correct |
1 ms |
364 KB |
n = 20, m = 1 |
8 |
Correct |
1 ms |
364 KB |
n = 20, m = 5 |
9 |
Correct |
1 ms |
364 KB |
n = 18, m = 3 |
10 |
Correct |
1 ms |
364 KB |
n = 17, m = 2 |
11 |
Correct |
1 ms |
364 KB |
n = 20, m = 2 |
12 |
Correct |
1 ms |
364 KB |
n = 17, m = 4 |
13 |
Correct |
1 ms |
384 KB |
n = 17, m = 6 |
14 |
Correct |
1 ms |
364 KB |
n = 17, m = 1 |
15 |
Correct |
1 ms |
364 KB |
n = 17, m = 4 |
16 |
Correct |
1 ms |
384 KB |
n = 13, m = 3 |
17 |
Correct |
1 ms |
364 KB |
n = 18, m = 4 |
18 |
Correct |
1 ms |
364 KB |
n = 20, m = 10 |
19 |
Correct |
1 ms |
384 KB |
n = 19, m = 10 |
20 |
Correct |
1 ms |
492 KB |
n = 100, m = 5 |
21 |
Correct |
1 ms |
364 KB |
n = 90, m = 3 |
22 |
Correct |
1 ms |
364 KB |
n = 86, m = 2 |
23 |
Correct |
1 ms |
364 KB |
n = 81, m = 4 |
24 |
Correct |
1 ms |
364 KB |
n = 89, m = 10 |
25 |
Correct |
1 ms |
364 KB |
n = 81, m = 23 |
26 |
Correct |
1 ms |
364 KB |
n = 86, m = 8 |
27 |
Correct |
1 ms |
364 KB |
n = 53, m = 22 |
28 |
Correct |
1 ms |
492 KB |
n = 89, m = 35 |
29 |
Correct |
1 ms |
492 KB |
n = 63, m = 25 |
30 |
Correct |
1 ms |
492 KB |
n = 100, m = 50 |
31 |
Correct |
1 ms |
492 KB |
n = 99, m = 50 |
32 |
Incorrect |
1 ms |
364 KB |
char #0 differ - expected: '?', found: '_' |
33 |
Halted |
0 ms |
0 KB |
- |