Submission #968653

# Submission time Handle Problem Language Result Execution time Memory
968653 2024-04-23T19:37:29 Z MarwenElarbi Paint By Numbers (IOI16_paint) C++17
59 / 100
1 ms 860 KB
#include <bits/stdc++.h>
#include <cstdlib>
 
using namespace std;

int n,m;
int pre[105];
int suf[105];
bool ok[105][105];
bool bad[105][5005];
bool vis[105][105];
bool dp[105][105];
vector<int> nabba(105);
string bahma;
bool dfs(int x,int y){
    //cout <<n<<" "<<m<<endl;
    //cout <<x<<" "<<y<<" "<<vis[x][y]<<endl;
    if(x>n+1) return dp[x][y]=false;
    if(y==m){
        if(x<=n){
            //cout <<x<<endl;
            if(suf[n]-suf[x-1]>0) return false;
            bad[x][n-x]=true;
        }
        return dp[x][y]=true;
    }
    if(vis[x][y]) return dp[x][y];
    vis[x][y]=true;
    //x++;
    if(bahma[x]!='X'&&dfs(x+1,y)){
        bad[x][0]=true;
    }
    for (int i = x; i <= n-nabba[y]; ++i)
    {
        if(suf[i-1]-suf[x-1]>0) break;
        if((pre[i+nabba[y]-1]-pre[i-1])==0&&(suf[i+nabba[y]]-suf[i+nabba[y]-1])==0){
            //cout <<suf[10+nabba[y]]-pre[10+nabba[y]-1]<<endl;
            dp[i][y]|=dfs(i+nabba[y]+1,y+1);
            dp[x][y]|=dp[i][y];
            //dp[i][y]|=dfs(i+nabba[y],y+1);
            //if(x==10) cout <<i<<" "<<nabba[y]<<" "<<y<<" "<<dp[x][y]<<endl;
            if(dp[i][y]){
                ok[i][y]=true;
                if(i-x>0) bad[x][i-x-1]=true;
                bad[i+nabba[y]][0]=true;
                //cout <<x<<" "<<i<<" "<<y<<endl;
            }
            //cout <<x<<" "<<i<<" "<<i+nabba[y]+1<<" "<<y+1<<endl;
        }
    }
    //cout <<"end "<<" "<<x<<" "<<y<<" "<<dp[x][y]<<endl;
    return dp[x][y];
}
std::string solve_puzzle(std::string s, std::vector<int> c) {
    //if(s=="..._._....") return "???___????";
    //if(s==".X........") return "?XX?______";
    m=c.size();
    nabba=c;
    s='#'+s;
    bahma=s;
    n=s.size();
    //cout <<n<<endl;
    for (int i = 1; i <= n; ++i)
    {
        if(s[i]=='_') pre[i]=1;
        else if(s[i]=='X') suf[i]=1;
        pre[i]+=pre[i-1];
        suf[i]+=suf[i-1];
    }
    dfs(1,0);
    for (int i = 1; i <= n; ++i)
    {
        for (int j = 0; j < m; ++j)
        {
            if(ok[i][j]){
                //cout <<i<<" "<<j<<endl;
                for (int k = i; k <= i+c[j]-1; ++k)
                {
                    ok[k][104]=true;
                }
            }
        }
    }
    for (int i = 1; i <= n; ++i)
    {
        for (int j = 1; j <= n; ++j)
        {
            if(bad[i][j]){
                for (int k = i; k <= i+j; ++k)
                {
                    bad[k][0]=true;
                }
            }
        }
    }
    string res="";
    for (int i = 1; i <= n; ++i)
    {
        //cout <<res<<endl;
        //cout <<ok[i][0]<<" ";
        if(s[i]!='.') res.push_back(s[i]);
        else if(ok[i][104]&&bad[i][0]) res.push_back('?');
        else if(ok[i][104]) res.push_back('X');
        else res.push_back('_');
    }
    return res;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB n = 13, m = 1
2 Correct 0 ms 348 KB n = 18, m = 1
3 Correct 0 ms 444 KB n = 17, m = 1
4 Correct 0 ms 344 KB n = 1, m = 1
5 Correct 1 ms 348 KB n = 20, m = 1
6 Correct 0 ms 348 KB n = 20, m = 1
7 Correct 0 ms 344 KB n = 20, m = 1
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB n = 13, m = 1
2 Correct 0 ms 348 KB n = 18, m = 1
3 Correct 0 ms 444 KB n = 17, m = 1
4 Correct 0 ms 344 KB n = 1, m = 1
5 Correct 1 ms 348 KB n = 20, m = 1
6 Correct 0 ms 348 KB n = 20, m = 1
7 Correct 0 ms 344 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 1 ms 348 KB n = 17, m = 2
11 Correct 0 ms 348 KB n = 20, m = 2
12 Correct 1 ms 460 KB n = 17, m = 4
13 Correct 1 ms 344 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 1 ms 444 KB n = 13, m = 3
17 Correct 0 ms 348 KB n = 18, m = 4
18 Correct 0 ms 348 KB n = 20, m = 10
19 Correct 0 ms 348 KB n = 19, m = 10
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB n = 13, m = 1
2 Correct 0 ms 348 KB n = 18, m = 1
3 Correct 0 ms 444 KB n = 17, m = 1
4 Correct 0 ms 344 KB n = 1, m = 1
5 Correct 1 ms 348 KB n = 20, m = 1
6 Correct 0 ms 348 KB n = 20, m = 1
7 Correct 0 ms 344 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 1 ms 348 KB n = 17, m = 2
11 Correct 0 ms 348 KB n = 20, m = 2
12 Correct 1 ms 460 KB n = 17, m = 4
13 Correct 1 ms 344 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 1 ms 444 KB n = 13, m = 3
17 Correct 0 ms 348 KB n = 18, m = 4
18 Correct 0 ms 348 KB n = 20, m = 10
19 Correct 0 ms 348 KB n = 19, m = 10
20 Correct 1 ms 860 KB n = 100, m = 5
21 Correct 1 ms 604 KB n = 90, m = 3
22 Correct 1 ms 604 KB n = 86, m = 2
23 Correct 1 ms 604 KB n = 81, m = 4
24 Correct 1 ms 356 KB n = 89, m = 10
25 Correct 1 ms 604 KB n = 81, m = 23
26 Correct 1 ms 608 KB n = 86, m = 8
27 Correct 1 ms 348 KB n = 53, m = 22
28 Correct 1 ms 604 KB n = 89, m = 35
29 Correct 1 ms 348 KB n = 63, m = 25
30 Correct 1 ms 860 KB n = 100, m = 50
31 Correct 1 ms 604 KB n = 99, m = 50
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB n = 13, m = 1
2 Correct 0 ms 348 KB n = 18, m = 1
3 Correct 0 ms 444 KB n = 17, m = 1
4 Correct 0 ms 344 KB n = 1, m = 1
5 Correct 1 ms 348 KB n = 20, m = 1
6 Correct 0 ms 348 KB n = 20, m = 1
7 Correct 0 ms 344 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 1 ms 348 KB n = 17, m = 2
11 Correct 0 ms 348 KB n = 20, m = 2
12 Correct 1 ms 460 KB n = 17, m = 4
13 Correct 1 ms 344 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 1 ms 444 KB n = 13, m = 3
17 Correct 0 ms 348 KB n = 18, m = 4
18 Correct 0 ms 348 KB n = 20, m = 10
19 Correct 0 ms 348 KB n = 19, m = 10
20 Correct 1 ms 860 KB n = 100, m = 5
21 Correct 1 ms 604 KB n = 90, m = 3
22 Correct 1 ms 604 KB n = 86, m = 2
23 Correct 1 ms 604 KB n = 81, m = 4
24 Correct 1 ms 356 KB n = 89, m = 10
25 Correct 1 ms 604 KB n = 81, m = 23
26 Correct 1 ms 608 KB n = 86, m = 8
27 Correct 1 ms 348 KB n = 53, m = 22
28 Correct 1 ms 604 KB n = 89, m = 35
29 Correct 1 ms 348 KB n = 63, m = 25
30 Correct 1 ms 860 KB n = 100, m = 50
31 Correct 1 ms 604 KB n = 99, m = 50
32 Correct 1 ms 544 KB n = 13, m = 4
33 Correct 1 ms 604 KB n = 86, m = 2
34 Correct 1 ms 604 KB n = 88, m = 2
35 Correct 1 ms 612 KB n = 86, m = 2
36 Correct 1 ms 604 KB n = 81, m = 6
37 Correct 1 ms 860 KB n = 98, m = 7
38 Correct 1 ms 860 KB n = 92, m = 7
39 Correct 1 ms 604 KB n = 88, m = 21
40 Correct 1 ms 860 KB n = 90, m = 21
41 Correct 1 ms 860 KB n = 98, m = 22
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB n = 13, m = 1
2 Correct 0 ms 348 KB n = 18, m = 1
3 Correct 0 ms 444 KB n = 17, m = 1
4 Correct 0 ms 344 KB n = 1, m = 1
5 Correct 1 ms 348 KB n = 20, m = 1
6 Correct 0 ms 348 KB n = 20, m = 1
7 Correct 0 ms 344 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 1 ms 348 KB n = 17, m = 2
11 Correct 0 ms 348 KB n = 20, m = 2
12 Correct 1 ms 460 KB n = 17, m = 4
13 Correct 1 ms 344 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 1 ms 444 KB n = 13, m = 3
17 Correct 0 ms 348 KB n = 18, m = 4
18 Correct 0 ms 348 KB n = 20, m = 10
19 Correct 0 ms 348 KB n = 19, m = 10
20 Correct 1 ms 860 KB n = 100, m = 5
21 Correct 1 ms 604 KB n = 90, m = 3
22 Correct 1 ms 604 KB n = 86, m = 2
23 Correct 1 ms 604 KB n = 81, m = 4
24 Correct 1 ms 356 KB n = 89, m = 10
25 Correct 1 ms 604 KB n = 81, m = 23
26 Correct 1 ms 608 KB n = 86, m = 8
27 Correct 1 ms 348 KB n = 53, m = 22
28 Correct 1 ms 604 KB n = 89, m = 35
29 Correct 1 ms 348 KB n = 63, m = 25
30 Correct 1 ms 860 KB n = 100, m = 50
31 Correct 1 ms 604 KB n = 99, m = 50
32 Correct 1 ms 544 KB n = 13, m = 4
33 Correct 1 ms 604 KB n = 86, m = 2
34 Correct 1 ms 604 KB n = 88, m = 2
35 Correct 1 ms 612 KB n = 86, m = 2
36 Correct 1 ms 604 KB n = 81, m = 6
37 Correct 1 ms 860 KB n = 98, m = 7
38 Correct 1 ms 860 KB n = 92, m = 7
39 Correct 1 ms 604 KB n = 88, m = 21
40 Correct 1 ms 860 KB n = 90, m = 21
41 Correct 1 ms 860 KB n = 98, m = 22
42 Correct 1 ms 344 KB n = 11, m = 2
43 Correct 0 ms 348 KB n = 11, m = 2
44 Incorrect 0 ms 348 KB char #1 differ - expected: '_', found: '?'
45 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB n = 13, m = 1
2 Correct 0 ms 348 KB n = 18, m = 1
3 Correct 0 ms 444 KB n = 17, m = 1
4 Correct 0 ms 344 KB n = 1, m = 1
5 Correct 1 ms 348 KB n = 20, m = 1
6 Correct 0 ms 348 KB n = 20, m = 1
7 Correct 0 ms 344 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 1 ms 348 KB n = 17, m = 2
11 Correct 0 ms 348 KB n = 20, m = 2
12 Correct 1 ms 460 KB n = 17, m = 4
13 Correct 1 ms 344 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 1 ms 444 KB n = 13, m = 3
17 Correct 0 ms 348 KB n = 18, m = 4
18 Correct 0 ms 348 KB n = 20, m = 10
19 Correct 0 ms 348 KB n = 19, m = 10
20 Correct 1 ms 860 KB n = 100, m = 5
21 Correct 1 ms 604 KB n = 90, m = 3
22 Correct 1 ms 604 KB n = 86, m = 2
23 Correct 1 ms 604 KB n = 81, m = 4
24 Correct 1 ms 356 KB n = 89, m = 10
25 Correct 1 ms 604 KB n = 81, m = 23
26 Correct 1 ms 608 KB n = 86, m = 8
27 Correct 1 ms 348 KB n = 53, m = 22
28 Correct 1 ms 604 KB n = 89, m = 35
29 Correct 1 ms 348 KB n = 63, m = 25
30 Correct 1 ms 860 KB n = 100, m = 50
31 Correct 1 ms 604 KB n = 99, m = 50
32 Correct 1 ms 544 KB n = 13, m = 4
33 Correct 1 ms 604 KB n = 86, m = 2
34 Correct 1 ms 604 KB n = 88, m = 2
35 Correct 1 ms 612 KB n = 86, m = 2
36 Correct 1 ms 604 KB n = 81, m = 6
37 Correct 1 ms 860 KB n = 98, m = 7
38 Correct 1 ms 860 KB n = 92, m = 7
39 Correct 1 ms 604 KB n = 88, m = 21
40 Correct 1 ms 860 KB n = 90, m = 21
41 Correct 1 ms 860 KB n = 98, m = 22
42 Correct 1 ms 344 KB n = 11, m = 2
43 Correct 0 ms 348 KB n = 11, m = 2
44 Incorrect 0 ms 348 KB char #1 differ - expected: '_', found: '?'
45 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB n = 13, m = 1
2 Correct 0 ms 348 KB n = 18, m = 1
3 Correct 0 ms 444 KB n = 17, m = 1
4 Correct 0 ms 344 KB n = 1, m = 1
5 Correct 1 ms 348 KB n = 20, m = 1
6 Correct 0 ms 348 KB n = 20, m = 1
7 Correct 0 ms 344 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 1 ms 348 KB n = 17, m = 2
11 Correct 0 ms 348 KB n = 20, m = 2
12 Correct 1 ms 460 KB n = 17, m = 4
13 Correct 1 ms 344 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 1 ms 444 KB n = 13, m = 3
17 Correct 0 ms 348 KB n = 18, m = 4
18 Correct 0 ms 348 KB n = 20, m = 10
19 Correct 0 ms 348 KB n = 19, m = 10
20 Correct 1 ms 860 KB n = 100, m = 5
21 Correct 1 ms 604 KB n = 90, m = 3
22 Correct 1 ms 604 KB n = 86, m = 2
23 Correct 1 ms 604 KB n = 81, m = 4
24 Correct 1 ms 356 KB n = 89, m = 10
25 Correct 1 ms 604 KB n = 81, m = 23
26 Correct 1 ms 608 KB n = 86, m = 8
27 Correct 1 ms 348 KB n = 53, m = 22
28 Correct 1 ms 604 KB n = 89, m = 35
29 Correct 1 ms 348 KB n = 63, m = 25
30 Correct 1 ms 860 KB n = 100, m = 50
31 Correct 1 ms 604 KB n = 99, m = 50
32 Correct 1 ms 544 KB n = 13, m = 4
33 Correct 1 ms 604 KB n = 86, m = 2
34 Correct 1 ms 604 KB n = 88, m = 2
35 Correct 1 ms 612 KB n = 86, m = 2
36 Correct 1 ms 604 KB n = 81, m = 6
37 Correct 1 ms 860 KB n = 98, m = 7
38 Correct 1 ms 860 KB n = 92, m = 7
39 Correct 1 ms 604 KB n = 88, m = 21
40 Correct 1 ms 860 KB n = 90, m = 21
41 Correct 1 ms 860 KB n = 98, m = 22
42 Correct 1 ms 344 KB n = 11, m = 2
43 Correct 0 ms 348 KB n = 11, m = 2
44 Incorrect 0 ms 348 KB char #1 differ - expected: '_', found: '?'
45 Halted 0 ms 0 KB -