#include <iostream>
#include <vector>
#include "paint.h"
using namespace std;
const int M = 100005;
int pre[M], Pre[M][105], Suf[M][105], cnt[M];
string solve_puzzle(string s, vector<int> c){
int n = s.size(), k = c.size();
s = '0' + s;
s = s + '0';
for (int i=1;i<=n;i++){
pre[i] = pre[i-1] + (s[i] == '_');
}
Pre[0][0] = 1;
for (int i=1;i<=n;i++){
for (int j=0;j<=k;j++){
if (j < k and Pre[i-1][j] and i + c[j] - 1 <= n and pre[i + c[j] - 1] - pre[i-1] == 0 and s[i + c[j]] != 'X')
Pre[i+c[j]][j+1] = 1;
if (s[i] != 'X')
Pre[i][j] |= Pre[i-1][j];
}
}
Suf[n+1][k+1] = 1;
for (int i=n;i>=1;i--){
for (int j=1;j<=k+1;j++){
if (s[i] != 'X')
Suf[i][j] |= Suf[i+1][j];
if (j > 1 and Suf[i+1][j] and i - c[j-2] + 1 >= 1 and pre[i] - pre[i - c[j-2]] == 0 and s[i - c[j-2]] != 'X')////////////////////
Suf[i-c[j-2]][j-1] = 1;
}
}
for (int i=1;i<=n;i++){
for (int j=0;j<k;j++){
if (Pre[i-1][j] and i + c[j] - 1 <= n and pre[i + c[j] - 1] - pre[i-1] == 0 and s[i + c[j]] != 'X' and Suf[i + c[j]][j+2])
cnt[i]++, cnt[i+c[j]]--;
}
// for (int j=1;j<=k;j++)
// cout<<i<<" "<<j<<" "<<Suf[i][j]<<endl;
}
for (int i=1;i<=n;i++){
cnt[i] += cnt[i-1];
// cout<<cnt[i]<<' ';
char c = s[i];
for (int j=0;j<=k;j++){
// cout<<i<<" "<<j<<" "<<Pre[i][j]<<" "<<Suf[i][j+1]<<endl;
if (c == '.' and Pre[i][j] and Suf[i][j+1] and cnt[i] > 0)
s[i] = '?';//, cout<<i<<endl;
else if (c == '.' and s[i] != '?' and Pre[i][j] and Suf[i][j+1])
s[i] = '_';
else if (c == '.' and s[i] != '?' and cnt[i] > 0)
s[i] = 'X';
}
}
// cout<<'\n';
s.erase(begin(s));
s.erase(prev(end(s)));
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... |