#include <bits/stdc++.h>
using namespace std;
#define int long long
const int modulo = 1e9+7;
const int INF = 1e15;
int32_t main(){
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	int n,k;
	cin >> n >> k;
	vector<bool> grid(n+1);
	vector<int> P(n+1);
	for(int i=1;i<=n;i++){
		char a;cin>>a;
		grid[i]=a=='C';
		if(grid[i])P[i]=1;
		P[i]+=P[i-1];
	}
	vector DP(n+1,vector(n+1,vector<int>(k+1)));
	for(int l=n;l;l--){
		for(int r=l;r<=n;r++){
			for(int x=0;x<=k;x++){
				int other = P[n]-P[r]+P[l-1]-x;
				if(other>k or other<0)continue;
				if(other==k and x==k)continue; // Meaningless states
				if(other==k){DP[l][r][x]=1;continue;}
				if(x==k or l==r){DP[l][r][x]=2;continue;} // Exit states
				if(DP[l+1][r][other]==2 or DP[l][r-1][other]==2)DP[l][r][x]=1;
				else DP[l][r][x]=2;
			}
		}
	}
	if(DP[1][n][0]==1)cout<<"DA\n";
	else cout<<"NE\n";
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |