#include "paint.h"
#include <bits/stdc++.h>
#include <cstdlib>
#define pii pair<int, int>
#define rep(a,b,c) for(int a=b; a<c; a++)
#define repr(a,b,c) for(int a=b-1; a>c-1; a--)
#define fi first
#define se second
using namespace std;
string solve_puzzle(string s, vector<int> c) {
int n=s.size(), k=c.size(), lst=0;
int dp[n+1][k+1]{};
bool vis[n+1][k+1]{};
dp[0][0]=3;
rep(i,1,n+1){
if(s[i-1]=='_') lst=i;
rep(j,0,k+1){
if((s[i-1]=='_' || s[i-1]=='.') && dp[i-1][j]) dp[i][j]|=1;
if(j && i>=c[j-1] && lst<=i-c[j-1]){
if(i>c[j-1] && dp[i-c[j-1]-1][j-1] && s[i-c[j-1]-1]!='X') dp[i][j]|=2;
else if(i==c[j-1] && j==1) dp[i][j]|=2;
}
}
}
int x, y, p[n]{};
rep(i,0,n) s[i]='X';
vis[n][k]=true;
repr(i,n+1,1){
repr(j,k+1,0){
if(!vis[i][j]) continue;
if(dp[i][j]&1) vis[i-1][j]=true, p[i-1]|=1;
if(dp[i][j]&2){
p[i-1]|=2;
if(i>c[j-1]){
p[i-c[j-1]-1]|=1;
vis[i-c[j-1]-1][j-1]=true;
}
rep(z,i-c[j-1],i) p[z]|=2;
}
}
}
rep(i,0,n){
if(p[i]==3) s[i]='?';
else if(p[i]==0) s[i]='X';
else if(p[i]==2) s[i]='X';
else s[i]='_';
}
return s;
}
Compilation message (stderr)
paint.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
paint_c.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |