제출 #311113

#제출 시각아이디문제언어결과실행 시간메모리
311113juggernautPaint By Numbers (IOI16_paint)C++14
80 / 100
10 ms896 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...