# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
773517 | 2023-07-05T06:25:48 Z | peteza | Paint By Numbers (IOI16_paint) | C++14 | 1 ms | 468 KB |
//BRUH #include "paint.h" #include <iostream> #include <cstdlib> int wc[200005] = {}, bc[200005] = {}; int lb[200005] = {}, rb[200005] = {}; bool black[200005] = {}, white[200005] = {}; bool dpl[200005][105] = {}, dpr[200005][105] = {}; //possible to do from left? possible to do from right? blablabla int qsl[2000005][105] = {}, qsr[200005][105] = {}; int final[200005] = {}; std::string solve_puzzle(std::string s, std::vector<int> c) { lb[0] = 0; for(int i=1;i<s.size();i++) lb[i] = (s[i] == 'X' ? i : lb[i-1]); rb[s.size()-1] = s.size()-1; for(int i=s.size()-2;i>=0;i--) rb[i] = (s[i] == 'X' ? i : rb[i+1]); wc[0] = (s[0] == '_'); bc[0] = (s[0] == 'X'); for(int i=1;i<s.size();i++) wc[i] = wc[i-1] + (s[i] == '_'), bc[i] = bc[i-1] + (s[i] == 'X'); bc[s.size()] = bc[s.size()-1]; auto getwc = [&](int a, int b){return wc[b] - (a == 0 ? 0 : wc[a-1]);}; auto getbc = [&](int a, int b){return (b < 0 ? bc[0] : bc[b]) - (a == 0 ? 0 : bc[a-1]);}; for(int i=0;i<s.size();i++) black[i] = (s[i] == 'X'), white[i] = (s[i] == '_'); auto getqsl = [&](int a, int b, int lev){return qsl[b][lev] - (a == 0 ? 0 : qsl[a-1][lev]);}; auto getqsr = [&](int a, int b, int lev){return qsr[a][lev] - (b == s.size()-1 ? 0 : qsr[b+1][lev]);}; for(int i=0;i<s.size();i++) { if(i+1 >= c[0] && getwc(i-c[0]+1, i) == 0 && !getbc(0, i-c[0]) && !(c.size() == 1 && getbc(i+1, s.size()-1))) dpl[i][0] = 1; else dpl[i][0] = 0; qsl[i][0] = dpl[i][0] + (i == 0 ? 0 : qsl[i-1][0]); } for(int j=1;j<c.size();j++) { for(int i=0;i<s.size();i++) { if(i > c[j] && getwc(i-c[j]+1, i) == 0 && s[i-c[j]] != 'X' && getqsl(lb[i-c[j]-1], i-c[j]-1, j-1) && !(c.size() == j+1 && getbc(i+1, s.size()-1))) dpl[i][j] = 1; else dpl[i][j] = 0; qsl[i][j] = dpl[i][j] + (i == 0 ? 0 : qsl[i-1][j]); //std::cout << i; } } for(int i=s.size()-1;i>=0;i--) { if(i+c[c.size()-1] <= s.size() && getwc(i, i+c[c.size()-1]-1) == 0 && !getbc(i+c[c.size()-1], s.size()-1) && !(c.size() == 1 && getbc(0, i-1))) dpr[i][c.size()-1] = 1; else dpr[i][c.size()-1] = 0; qsr[i][c.size()-1] = dpr[i][c.size()-1] + (i == s.size()-1 ? 0 : qsr[i+1][c.size()-1]); } for(int j=c.size()-2;j>=0;j--) { for(int i=s.size()-1;i>=0;i--) { if(i+c[j]+2 <= s.size() && getwc(i, i+c[j]-1) == 0 && s[i+c[j]] != 'X' && getqsr(i+c[j]+1, rb[i+c[j]+1], j+1) && !(!j && getbc(0, i-1))) dpr[i][j] = 1; else dpr[i][j] = 0; qsr[i][j] = dpr[i][j] + (i == s.size()-1 ? 0 : qsr[i+1][j]); } } //for(int i=0;i<s.size();i++) std::cout << dpl[i][0]; std::cout << '\n'; //for(int i=0;i<s.size();i++) std::cout << dpr[i][0]; std::cout << '\n'; for(int i=0;i+1<s.size();i++) if(qsr[i+1][0]) white[i] = 1; for(int i=1;i<s.size();i++) if(qsl[i-1][c.size()-1]) white[i] = 1; for(int i=0;i+2<s.size();i++) { for(int j=0;j+1<c.size();j++) { if(getqsl(0, i, j) && getqsr(i+2, s.size()-1, j+1)) white[i+1] = 1; } } for(int j=0;j<c.size();j++) { if(j == c.size()-1) { for(int i=0;i<s.size();i++) { if(dpl[i][j]) final[i-c[j]+1] = 1, final[i+1] = -1; } } else { for(int i=0;i+2<s.size();i++) { if(dpl[i][j] && qsr[i+2][j+1]) //doable final[i-c[j]+1] = 1, final[i+1] = -1; } } } int cnt = 0; for(int i=0;i<s.size();i++) { cnt += final[i]; black[i] = cnt; } std::string ans = s; for(int i=0;i<s.size();i++) { if(black[i] && white[i]) ans[i] = '?'; else if(black[i]) ans[i] = 'X'; else ans[i] = '_'; } return ans; } /* #include <cassert> const int S_MAX_LEN = 200 * 1000; char buf[S_MAX_LEN + 1]; int main() { assert(1 == scanf("%s", buf)); std::string s = buf; int c_len; assert(1 == scanf("%d", &c_len)); std::vector<int> c(c_len); for (int i = 0; i < c_len; i++) { assert(1 == scanf("%d", &c[i])); } std::string ans = solve_puzzle(s, c); printf("%s\n", ans.data()); return 0; } */ /* ........ 2 3 4 */
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | n = 13, m = 1 |
2 | Correct | 0 ms | 340 KB | n = 18, m = 1 |
3 | Correct | 0 ms | 340 KB | n = 17, m = 1 |
4 | Correct | 1 ms | 340 KB | n = 1, m = 1 |
5 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
6 | Correct | 0 ms | 340 KB | n = 20, m = 1 |
7 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | n = 13, m = 1 |
2 | Correct | 0 ms | 340 KB | n = 18, m = 1 |
3 | Correct | 0 ms | 340 KB | n = 17, m = 1 |
4 | Correct | 1 ms | 340 KB | n = 1, m = 1 |
5 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
6 | Correct | 0 ms | 340 KB | n = 20, m = 1 |
7 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
8 | Correct | 1 ms | 340 KB | n = 20, m = 5 |
9 | Correct | 1 ms | 340 KB | n = 18, m = 3 |
10 | Correct | 1 ms | 340 KB | n = 17, m = 2 |
11 | Correct | 0 ms | 340 KB | n = 20, m = 2 |
12 | Correct | 1 ms | 340 KB | n = 17, m = 4 |
13 | Correct | 1 ms | 340 KB | n = 17, m = 6 |
14 | Correct | 1 ms | 340 KB | n = 17, m = 1 |
15 | Correct | 1 ms | 340 KB | n = 17, m = 4 |
16 | Correct | 0 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 | 0 ms | 340 KB | n = 19, m = 10 |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | n = 13, m = 1 |
2 | Correct | 0 ms | 340 KB | n = 18, m = 1 |
3 | Correct | 0 ms | 340 KB | n = 17, m = 1 |
4 | Correct | 1 ms | 340 KB | n = 1, m = 1 |
5 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
6 | Correct | 0 ms | 340 KB | n = 20, m = 1 |
7 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
8 | Correct | 1 ms | 340 KB | n = 20, m = 5 |
9 | Correct | 1 ms | 340 KB | n = 18, m = 3 |
10 | Correct | 1 ms | 340 KB | n = 17, m = 2 |
11 | Correct | 0 ms | 340 KB | n = 20, m = 2 |
12 | Correct | 1 ms | 340 KB | n = 17, m = 4 |
13 | Correct | 1 ms | 340 KB | n = 17, m = 6 |
14 | Correct | 1 ms | 340 KB | n = 17, m = 1 |
15 | Correct | 1 ms | 340 KB | n = 17, m = 4 |
16 | Correct | 0 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 | 0 ms | 340 KB | n = 19, m = 10 |
20 | Correct | 0 ms | 468 KB | n = 100, m = 5 |
21 | Correct | 0 ms | 340 KB | n = 90, m = 3 |
22 | Correct | 0 ms | 340 KB | n = 86, m = 2 |
23 | Correct | 0 ms | 340 KB | n = 81, m = 4 |
24 | Correct | 0 ms | 340 KB | n = 89, m = 10 |
25 | Correct | 0 ms | 340 KB | n = 81, m = 23 |
26 | Correct | 0 ms | 340 KB | n = 86, m = 8 |
27 | Correct | 0 ms | 340 KB | n = 53, m = 22 |
28 | Correct | 1 ms | 340 KB | n = 89, m = 35 |
29 | Correct | 0 ms | 340 KB | n = 63, m = 25 |
30 | Correct | 0 ms | 468 KB | n = 100, m = 50 |
31 | Correct | 1 ms | 468 KB | n = 99, m = 50 |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | n = 13, m = 1 |
2 | Correct | 0 ms | 340 KB | n = 18, m = 1 |
3 | Correct | 0 ms | 340 KB | n = 17, m = 1 |
4 | Correct | 1 ms | 340 KB | n = 1, m = 1 |
5 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
6 | Correct | 0 ms | 340 KB | n = 20, m = 1 |
7 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
8 | Correct | 1 ms | 340 KB | n = 20, m = 5 |
9 | Correct | 1 ms | 340 KB | n = 18, m = 3 |
10 | Correct | 1 ms | 340 KB | n = 17, m = 2 |
11 | Correct | 0 ms | 340 KB | n = 20, m = 2 |
12 | Correct | 1 ms | 340 KB | n = 17, m = 4 |
13 | Correct | 1 ms | 340 KB | n = 17, m = 6 |
14 | Correct | 1 ms | 340 KB | n = 17, m = 1 |
15 | Correct | 1 ms | 340 KB | n = 17, m = 4 |
16 | Correct | 0 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 | 0 ms | 340 KB | n = 19, m = 10 |
20 | Correct | 0 ms | 468 KB | n = 100, m = 5 |
21 | Correct | 0 ms | 340 KB | n = 90, m = 3 |
22 | Correct | 0 ms | 340 KB | n = 86, m = 2 |
23 | Correct | 0 ms | 340 KB | n = 81, m = 4 |
24 | Correct | 0 ms | 340 KB | n = 89, m = 10 |
25 | Correct | 0 ms | 340 KB | n = 81, m = 23 |
26 | Correct | 0 ms | 340 KB | n = 86, m = 8 |
27 | Correct | 0 ms | 340 KB | n = 53, m = 22 |
28 | Correct | 1 ms | 340 KB | n = 89, m = 35 |
29 | Correct | 0 ms | 340 KB | n = 63, m = 25 |
30 | Correct | 0 ms | 468 KB | n = 100, m = 50 |
31 | Correct | 1 ms | 468 KB | n = 99, m = 50 |
32 | Correct | 1 ms | 340 KB | n = 13, m = 4 |
33 | Incorrect | 1 ms | 340 KB | char #26 differ - expected: '_', found: '?' |
34 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | n = 13, m = 1 |
2 | Correct | 0 ms | 340 KB | n = 18, m = 1 |
3 | Correct | 0 ms | 340 KB | n = 17, m = 1 |
4 | Correct | 1 ms | 340 KB | n = 1, m = 1 |
5 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
6 | Correct | 0 ms | 340 KB | n = 20, m = 1 |
7 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
8 | Correct | 1 ms | 340 KB | n = 20, m = 5 |
9 | Correct | 1 ms | 340 KB | n = 18, m = 3 |
10 | Correct | 1 ms | 340 KB | n = 17, m = 2 |
11 | Correct | 0 ms | 340 KB | n = 20, m = 2 |
12 | Correct | 1 ms | 340 KB | n = 17, m = 4 |
13 | Correct | 1 ms | 340 KB | n = 17, m = 6 |
14 | Correct | 1 ms | 340 KB | n = 17, m = 1 |
15 | Correct | 1 ms | 340 KB | n = 17, m = 4 |
16 | Correct | 0 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 | 0 ms | 340 KB | n = 19, m = 10 |
20 | Correct | 0 ms | 468 KB | n = 100, m = 5 |
21 | Correct | 0 ms | 340 KB | n = 90, m = 3 |
22 | Correct | 0 ms | 340 KB | n = 86, m = 2 |
23 | Correct | 0 ms | 340 KB | n = 81, m = 4 |
24 | Correct | 0 ms | 340 KB | n = 89, m = 10 |
25 | Correct | 0 ms | 340 KB | n = 81, m = 23 |
26 | Correct | 0 ms | 340 KB | n = 86, m = 8 |
27 | Correct | 0 ms | 340 KB | n = 53, m = 22 |
28 | Correct | 1 ms | 340 KB | n = 89, m = 35 |
29 | Correct | 0 ms | 340 KB | n = 63, m = 25 |
30 | Correct | 0 ms | 468 KB | n = 100, m = 50 |
31 | Correct | 1 ms | 468 KB | n = 99, m = 50 |
32 | Correct | 1 ms | 340 KB | n = 13, m = 4 |
33 | Incorrect | 1 ms | 340 KB | char #26 differ - expected: '_', found: '?' |
34 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | n = 13, m = 1 |
2 | Correct | 0 ms | 340 KB | n = 18, m = 1 |
3 | Correct | 0 ms | 340 KB | n = 17, m = 1 |
4 | Correct | 1 ms | 340 KB | n = 1, m = 1 |
5 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
6 | Correct | 0 ms | 340 KB | n = 20, m = 1 |
7 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
8 | Correct | 1 ms | 340 KB | n = 20, m = 5 |
9 | Correct | 1 ms | 340 KB | n = 18, m = 3 |
10 | Correct | 1 ms | 340 KB | n = 17, m = 2 |
11 | Correct | 0 ms | 340 KB | n = 20, m = 2 |
12 | Correct | 1 ms | 340 KB | n = 17, m = 4 |
13 | Correct | 1 ms | 340 KB | n = 17, m = 6 |
14 | Correct | 1 ms | 340 KB | n = 17, m = 1 |
15 | Correct | 1 ms | 340 KB | n = 17, m = 4 |
16 | Correct | 0 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 | 0 ms | 340 KB | n = 19, m = 10 |
20 | Correct | 0 ms | 468 KB | n = 100, m = 5 |
21 | Correct | 0 ms | 340 KB | n = 90, m = 3 |
22 | Correct | 0 ms | 340 KB | n = 86, m = 2 |
23 | Correct | 0 ms | 340 KB | n = 81, m = 4 |
24 | Correct | 0 ms | 340 KB | n = 89, m = 10 |
25 | Correct | 0 ms | 340 KB | n = 81, m = 23 |
26 | Correct | 0 ms | 340 KB | n = 86, m = 8 |
27 | Correct | 0 ms | 340 KB | n = 53, m = 22 |
28 | Correct | 1 ms | 340 KB | n = 89, m = 35 |
29 | Correct | 0 ms | 340 KB | n = 63, m = 25 |
30 | Correct | 0 ms | 468 KB | n = 100, m = 50 |
31 | Correct | 1 ms | 468 KB | n = 99, m = 50 |
32 | Correct | 1 ms | 340 KB | n = 13, m = 4 |
33 | Incorrect | 1 ms | 340 KB | char #26 differ - expected: '_', found: '?' |
34 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | n = 13, m = 1 |
2 | Correct | 0 ms | 340 KB | n = 18, m = 1 |
3 | Correct | 0 ms | 340 KB | n = 17, m = 1 |
4 | Correct | 1 ms | 340 KB | n = 1, m = 1 |
5 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
6 | Correct | 0 ms | 340 KB | n = 20, m = 1 |
7 | Correct | 1 ms | 340 KB | n = 20, m = 1 |
8 | Correct | 1 ms | 340 KB | n = 20, m = 5 |
9 | Correct | 1 ms | 340 KB | n = 18, m = 3 |
10 | Correct | 1 ms | 340 KB | n = 17, m = 2 |
11 | Correct | 0 ms | 340 KB | n = 20, m = 2 |
12 | Correct | 1 ms | 340 KB | n = 17, m = 4 |
13 | Correct | 1 ms | 340 KB | n = 17, m = 6 |
14 | Correct | 1 ms | 340 KB | n = 17, m = 1 |
15 | Correct | 1 ms | 340 KB | n = 17, m = 4 |
16 | Correct | 0 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 | 0 ms | 340 KB | n = 19, m = 10 |
20 | Correct | 0 ms | 468 KB | n = 100, m = 5 |
21 | Correct | 0 ms | 340 KB | n = 90, m = 3 |
22 | Correct | 0 ms | 340 KB | n = 86, m = 2 |
23 | Correct | 0 ms | 340 KB | n = 81, m = 4 |
24 | Correct | 0 ms | 340 KB | n = 89, m = 10 |
25 | Correct | 0 ms | 340 KB | n = 81, m = 23 |
26 | Correct | 0 ms | 340 KB | n = 86, m = 8 |
27 | Correct | 0 ms | 340 KB | n = 53, m = 22 |
28 | Correct | 1 ms | 340 KB | n = 89, m = 35 |
29 | Correct | 0 ms | 340 KB | n = 63, m = 25 |
30 | Correct | 0 ms | 468 KB | n = 100, m = 50 |
31 | Correct | 1 ms | 468 KB | n = 99, m = 50 |
32 | Correct | 1 ms | 340 KB | n = 13, m = 4 |
33 | Incorrect | 1 ms | 340 KB | char #26 differ - expected: '_', found: '?' |
34 | Halted | 0 ms | 0 KB | - |