This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define OPT ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define pii pair<int,int>
#define pll pair<ll,ll>
#define endl "\n"
#define all(v) v.begin(),v.end()
#define mpr make_pair
#define pb push_back
#define ts to_string
#define inf 0x3F3F3F3F
#define bpc __builtin_popcount
int k;
string s;
bool player2(int l, int r, int cnt1, int cnt2);
vector<vector<vector<short>>> dp1(351, vector<vector<short>> (351, vector<short> (351, -1)));
vector<vector<vector<short>>> dp2(351, vector<vector<short>> (351, vector<short> (351, -1)));
bool player1(int l, int r, int cnt1, int cnt2)// a || b || c
{
if (cnt2 == k) return true;
if (dp1[l][r][cnt2] != -1) return dp1[l][r][cnt2];
bool a, b;
a = b = false;
if (s[l] == 'C') a = player2(l + 1, r, cnt1 + 1, cnt2);
else a = player2(l + 1, r, cnt1, cnt2);
if (s[r] == 'C') b = player2(l, r - 1, cnt1 + 1, cnt2);
else b = player2(l, r - 1, cnt1, cnt2);
return dp1[l][r][cnt2] = (a || b);
}
bool player2(int l, int r, int cnt1, int cnt2)// a && b && c
{
if (cnt1 == k) return false;
if (dp2[l][r][cnt1] != -1) return dp2[l][r][cnt1];
bool a, b;
a = b = false;
if (s[l] == 'C') a = player1(l + 1, r, cnt1, cnt2 + 1);
else a = player1(l + 1, r, cnt1, cnt2);
if (s[r] == 'C') b = player1(l, r - 1, cnt1, cnt2 + 1);
else b = player1(l, r - 1, cnt1, cnt2);
return dp2[l][r][cnt1] = (a && b);
}
int main()
{
int n;
cin >> n >> k;
cin >> s;
cout << (player1(0, n - 1, 0, 0) ? "DA" : "NE") << endl;
return 0;
}
Compilation message (stderr)
Main.cpp: In function 'bool player1(int, int, int, int)':
Main.cpp:39:28: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
39 | return dp1[l][r][cnt2] = (a || b);
Main.cpp: In function 'bool player2(int, int, int, int)':
Main.cpp:55:28: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
55 | return dp2[l][r][cnt1] = (a && b);
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |