#include <bits/stdc++.h>
using namespace std;
const int MAXN=100;
int on[MAXN], suff[MAXN];
int n,m,tot;
vector<int> b;
void dfs(const string &s, const vector<int> &c, int j, int start){
if(j==m){
int jj=0;
tot++;
for(auto pos:b){
for(int i=0;i<c[jj];i++){
on[pos+i]++;
}
jj++;
}
return;
}
if(start>=n)return;
if(n-start<suff[j]+(m-j-2)*2)return;
for(int i=start;i<n;i++){
if(i+c[j]-1<n){
b.push_back(i);
dfs(s,c,j+1,i+c[j]+1);
b.pop_back();
}
}
}
std::string solve_puzzle(std::string s, std::vector<int> c){
n=s.size(), m=c.size(), tot=0;
suff[m-1]=c.back();
for(int i=m-2;i>=0;i--){
suff[i]=suff[i+1]+c[i];
}
dfs(s, c, 0, 0);
string ret="";
for(int i=0;i<n;i++){
if(on[i]==tot){
ret+='X';
}else if(on[i]==0){
ret+='_';
}else ret+='?';
}
return ret;
}
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... |