Submission #548070

#TimeUsernameProblemLanguageResultExecution timeMemory
548070aryan12Kamenčići (COCI21_kamencici)C++17
0 / 70
1 ms340 KiB
#include <bits/stdc++.h> using namespace std; #define int long long mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count()); int n, k; string s; const int N = 352; int dp[N][N][2]; void Recur(int l, int r) { if(dp[l][r][0] != -1) { return; } int movesPlayed = (n - 1 - r) + l; int curMove = movesPlayed % 2; if(l == r) { dp[l][r][1 - curMove] = 0; dp[l][r][curMove] = (s[l] == 'C') ? 1 : 0; return; } Recur(l, r - 1); Recur(l + 1, r); if(dp[l + 1][r][curMove] + (s[l] == 'C') < dp[l][r - 1][curMove] + (s[r] == 'C')) { dp[l][r][curMove] = dp[l + 1][r][curMove]; dp[l][r][1 - curMove] = dp[l + 1][r][1 - curMove]; if(s[l] == 'C') { dp[l][r][curMove]++; } } else { dp[l][r][curMove] = dp[l][r - 1][curMove]; dp[l][r][1 - curMove] = dp[l][r - 1][1 - curMove]; if(s[r] == 'C') { dp[l][r][curMove]++; } } } void Solve() { cin >> n >> k >> s; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { dp[i][j][0] = -1; dp[i][j][1] = -1; } } Recur(0, n - 1); // for(int i = 0; i < n; i++) // { // for(int j = i; j < n; j++) // { // cout << "i = " << i << ", j = " << j << ": "; // cout << dp[i][j][0] << " " << dp[i][j][1] << "\n"; // } // } int initial0 = dp[0][n - 1][0], initial1 = dp[0][n - 1][1]; for(int i = 0; i < n; i++) { for(int j = i + 1; j < n; j++) { if(initial1 - dp[i][j][1] == k && initial0 - dp[i][j][0] < k) { cout << "DA\n"; return; } } } cout << "NE\n"; } int32_t main() { auto begin = std::chrono::high_resolution_clock::now(); ios_base::sync_with_stdio(0); cin.tie(0); int t = 1; //cin >> t; for(int i = 1; i <= t; i++) { //cout << "Case #" << i << ": "; Solve(); } auto end = std::chrono::high_resolution_clock::now(); auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin); cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...