Submission #1198005

#TimeUsernameProblemLanguageResultExecution timeMemory
1198005brover29Kamenčići (COCI21_kamencici)C++17
70 / 70
94 ms172360 KiB
#include <bits/stdc++.h>
//qwerty47924692
using namespace std;
using ll = long long;
const ll N=355;
const string br="617283";
#define sz(a)(ll)a.size()
#define f first
#define s second
ll n,dp[N][N][N],K,pref[N],suff[N];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin>>n>>K;
    string s;
    cin>>s;
    s=' '+s;
    for(ll i=1;i<=n;i++){
        pref[i]=pref[i-1]+(s[i]=='C');
    }for(ll i=n;i>=1;i--)suff[i]=pref[n]-pref[i-1];
    for(ll i=1;i<=n;i++){
        ll k=pref[i-1]+suff[i+1];
        for(ll k1=0;k1<=k;k1++){
            ll k2=k-k1;
            ll j=i-1+n-i;
            j%=2;
            if(j==0&&k2>=K)dp[i][i][k1]=1;
            if(j==0&&k1>=K)dp[i][i][k1]=0;
            if(j==1&&k1>=K)dp[i][i][k1]=1;
            if(j==1&&k2>=K)dp[i][i][k1]=0;

        }
    }

    for(ll len=2;len<=n;len++){
        for(ll l=1;l+len-1<=n;l++){
            ll r=l+len-1;
            ll k=pref[l-1]+suff[r+1];
            ll j=l-1+n-r;
            j%=2;
            for(ll k1=0;k1<=k;k1++){
                ll k2=k-k1;

                dp[l][r][k1]=!(dp[l+1][r][k1+(s[l]=='C')*(!j)]&&dp[l][r-1][k1+(s[r]=='C')*(!j)]);
//                if(l==1&&r==n&&k1==0){
//                    cout<<dp[l][r-1][k1+(s[r]=='C')*(!j)];
//                }
                if(j==0&&k2>=K)dp[l][r][k1]=1;
                if(j==0&&k1>=K)dp[l][r][k1]=0;
                if(j==1&&k1>=K)dp[l][r][k1]=1;
                if(j==1&&k2>=K)dp[l][r][k1]=0;
            }

        }
    }
    cout<<(dp[1][n][0] ? "DA" : "NE");
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...