Submission #1146837

#TimeUsernameProblemLanguageResultExecution timeMemory
1146837gulmixKamenčići (COCI21_kamencici)C++20
30 / 70
1105 ms341840 KiB
#include<bits/stdc++.h> #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; using namespace std; using ll = long long; #define all(x) x.begin(), x.end() #define oset tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> ll n, k; string s; ll dp[352][352][352]; vector<ll> pref(352); ll solve(ll l, ll r, ll m){ ll res = dp[l][r][m]; if(res == -1){ ll tot = pref[n-1]; ll rtot = pref[r]; if(l)rtot -= pref[l-1]; ll ored = tot - rtot - m; if(m >= k){ res = 0; }else if(ored >= k){ res = 1; }else{ if(!solve(l+1, r, ored) || !solve(l, r-1, ored)){ res = 1; }else{ res = 0; } } } return res; } int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); //ifstream cin("cycle2.in"); //ofstream cout("cycle2.out"); cin >> n >> k; cin >> s; for(int i = 0; i < 352; i++){ for(int j = 0; j < 352; j++){ for(int k = 0; k < 352; k++){ dp[i][j][k] = -1; } } } pref[0] = (s[0] == 'C'); for(int i = 1; i < n; i++){ pref[i] = pref[i-1] + (s[i] == 'C'); } if(solve(0, n-1, 0)){ cout << "DA"; }else{ cout << "NE"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...