Submission #1178534

#TimeUsernameProblemLanguageResultExecution timeMemory
1178534vannn168Kamenčići (COCI21_kamencici)C++20
30 / 70
43 ms111360 KiB
#include <bits/stdc++.h>
using namespace std;
const int N = 305;
int dp[N][N][N], p[N];
string s;
int n, k;
int rec(int l, int r, int cnt) {
    if(l > r) return 0;
    if(dp[l][r][cnt] != -1) return dp[l][r][cnt];
    dp[l][r][cnt] = 0;
    if(cnt + (s[l] == 'C') < k) dp[l][r][cnt] |= !rec(l + 1, r, p[n] - p[r] + p[l] - cnt - (s[l] == 'C'));
    if(cnt + (s[r] == 'C') < k) dp[l][r][cnt] |= !rec(l, r - 1, p[n] - p[r - 1] + p[l - 1] - cnt - (s[r] == 'C'));
    return dp[l][r][cnt];
}
int main(){
    ios_base::sync_with_stdio(0), cin.tie(0);
    cin >> n >> k >> s; 
    for(int i = 1; i <= n; ++i) {
        for(int j = 1; j <= n; ++j) {
            for(int p = 0; p <= n; ++p) {
                dp[i][j][p] = -1;
            }
        }
    }
    s = ' ' + s;
    for(int i = 0; i < n; ++i) {
        p[i + 1] = p[i] + (s[i + 1] == 'C');
    }
    cout << (rec(1, n, 0) ? "DA" : "NE") << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...