이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include"paint.h"
#include<bits/stdc++.h>
//#include"grader.cpp"
using namespace std;
string s;
vector<int>c;
int n,m;
bool dp[105][105],flag[105][105];
bool app(){
for(int i=1;i<=n;i++){
flag[i][i]=(s[i-1]=='_');
for(int j=i+1;j<=n;j++)
flag[i][j]=(flag[i][j-1]||s[j-1]=='_');
}
dp[0][0]=1;
for(int i=0;i<=m;i++)
for(int j=1;j<=n;j++){
dp[i][j]=0;
if(s[j-1]!='X')dp[i][j]|=dp[i][j-1];
if(i){
if(j>c[i-1])
dp[i][j]|=!flag[j-c[i-1]+1][j]&&s[j-1-c[i-1]]!='X'&&dp[i-1][j-c[i-1]-1];
if(j==c[i-1])
dp[i][j]|=!flag[1][j]&&i==1;
}
}
return dp[m][n];
}
string solve_puzzle(string S,vector<int>C){
n=S.size();
m=C.size();
s=S;
c.resize(m);
copy(C.begin(),C.end(),c.begin());
string res=s;
for(int i=0;i<n;i++)
if(s[i]=='.'){
s[i]='X';
bool black=app();
s[i]='_';
bool white=app();
s[i]='.';
if(white&&black)res[i]='?';
else if(black)res[i]='X';
else if(white)res[i]='_';
}
return res;
}
# | 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... |