이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "paint.h"
#include <cstdlib>
#include<bits/stdc++.h>
#define ll long long
using namespace std;
vector<int> blokovi;
string A,R;
bool dp[200005][105];
ll N,K,prefiks[105];
bool moguce(string B){
//cout<<"MOGUCE? "<<B.substr(1,N)<<endl;
int pbela=0;
for(int i=1;i<=N;i++)
for(int j=1;j<=K;j++)
dp[i][j]=0;
for(int i=1;i<=N;i++){
if(B[i]=='_')
pbela=i;
if(B[i-blokovi[1]]=='X'){
break;
}
if(i-blokovi[1]<pbela)
continue;
dp[i][1]=1;
}
pbela=0;
for(int i=1;i<=N;i++){
if(B[i]=='_')
pbela=i;
for(int j=2;j<=K;j++){
if(i<prefiks[j])
break;
if(i-blokovi[j]<pbela)
continue;
if(B[i-blokovi[j]]=='X')
continue;
for(int i2=i-blokovi[j]-1;i2>=1;i2--){
if(dp[i2][j-1]){
dp[i][j]=1;
break;
}
if(B[i2]=='X')
break;
}
}
}
/* for(int j=1;j<=K;j++){
for(int i=1;i<=N;i++)
cout<<dp[i][j]<<" ";
cout<<endl;
}*/
for(int i=N;i>=1;i--){
if(dp[i][K]==1){
// cout<<"JESTE"<<endl;
return true;
}
if(B[i]=='X')
break;
}
//cout<<"NIJE"<<endl;
return false;
}
string solve_puzzle(string s, vector<int> c) {
N=s.size();
K=c.size();
blokovi.push_back(0);
for(int i=0;i<K;i++)
blokovi.push_back(c[i]);
A="`"+s+"````";
prefiks[0]=-1;
for(int i=1;i<=K;i++)
prefiks[i]=prefiks[i-1]+1+blokovi[i];
prefiks[0]=0;
/*while(true){
cin>>s;
A="`"+s+"````";
cout<<moguce(A)<<endl;
}*/
for(int i=1;i<=N;i++){
if(A[i]!='.'){
R.push_back(A[i]);
continue;
}
int v=0;
A[i]='X';
if(moguce(A))
v++;
A[i]='_';
if(moguce(A))
v--;
A[i]='.';
if(v==1)
R.push_back('X');
if(v==0)
R.push_back('?');
if(v==-1)
R.push_back('_');
}
return R;
}
# | 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... |