제출 #703673

#제출 시각아이디문제언어결과실행 시간메모리
703673PacybwoahKamenčići (COCI21_kamencici)C++14
70 / 70
107 ms175348 KiB
//upsolve #include<iostream> #include<vector> #include<string> using namespace std; int main(){ int n,k; cin>>n>>k; string s; cin>>s; vector<int> pre(n+1); for(int i=1;i<=n;i++){ if(s[i-1]=='C') pre[i]=pre[i-1]+1; else pre[i]=pre[i-1]; } vector<vector<vector<int>>> dp(n+1,vector<vector<int>>(n+1,vector<int>(pre[n]+1))); for(int i=1;i<=n;i++){ for(int j=0;j<=pre[n];j++){ if(j+(s[i-1]=='C')>=k) dp[i][i][j]=0; else dp[i][i][j]=1; } } for(int i=2;i<=n;i++){ for(int j=1;j+i-1<=n;j++){ for(int l=0;l<=pre[n]-(pre[j+i-1]-pre[j-1]);l++){ int bcnt=pre[n]-(pre[j+i-1]-pre[j-1])-l; if(l>=k) dp[j][j+i-1][l]=0; else if(bcnt>=k) dp[j][j+i-1][l]=1; else if(dp[j+1][j+i-1][bcnt]&&dp[j][j+i-2][bcnt]) dp[j][j+i-1][l]=0; else dp[j][j+i-1][l]=1; } } } if(dp[1][n][0]) cout<<"DA\n"; else cout<<"NE\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...