Submission #1306218

#TimeUsernameProblemLanguageResultExecution timeMemory
1306218AMnuKamenčići (COCI21_kamencici)C++20
70 / 70
24 ms2908 KiB
#include <bits/stdc++.h> #define fi first #define se second using namespace std; typedef pair<int,int> pii; typedef long long ll; const int MAXN = 355; int N, K, pre[MAXN], suf[MAXN]; bitset <MAXN/2> dp[MAXN][MAXN]; string S; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> N >> K >> S; S = "."+S; for (int i=1;i<=N;i++) { pre[i] = pre[i-1] + (S[i]=='C'); } for (int i=N;i>=1;i--) { suf[i] = suf[i+1] + (S[i]=='C'); } for (int L=N;L>=1;L--) { for (int R=L-1;R<=N;R++) { for (int A=0;A<=K;A++) { if (A == K) { dp[L][R][A] = 0; continue; } if (pre[L-1] + suf[R+1] - A >= K) { dp[L][R][A] = 1; continue; } if ((R-L)%2 == (N-1)%2) { dp[L][R][A] = dp[L+1][R][A+(S[L]=='C')] || dp[L][R-1][A+(S[R]=='C')]; } else { dp[L][R][A] = dp[L+1][R][A] && dp[L][R-1][A]; } } } } 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...