Submission #932658

# Submission time Handle Problem Language Result Execution time Memory
932658 2024-02-24T02:19:01 Z Whisper Kamenčići (COCI21_kamencici) C++17
70 / 70
94 ms 339164 KB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

#define int long long
#define FOR(i, a, b) for ( int i = a ; i <= b ; i++ )
#define FORD(i, a, b) for (int i = b; i >= a; i --)
#define REP(i, n) for (int i = 0; i < n; ++i)
#define REPD(i, n) for (int i = n - 1; i >= 0; --i)
#define pii pair<int , int>
#define Lg(x) 31 - __builtin_clz(x)

#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)

constexpr ll LINF = (1ll << 60);
constexpr int INF = (1ll << 30);
constexpr int MAX = 351;
constexpr int Mod = 1e9 + 7;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

void setupIO(){
    #define name "Whisper"
    //Phu Trong from Nguyen Tat Thanh High School for gifted student
    srand(time(NULL));
    cin.tie(nullptr)->sync_with_stdio(false); cout.tie(nullptr);
    //freopen(name".inp", "r", stdin);
    //freopen(name".out", "w", stdout);
    cout << fixed << setprecision(10);
}

template <class X, class Y>
    bool minimize(X &x, const Y &y){
        X eps = 1e-9;
        if (x > y + eps) {x = y; return 1;}
        return 0;
    }

template <class X, class Y>
    bool maximize(X &x, const Y &y){
        X eps = 1e-9;
        if (x + eps < y) {x = y; return 1;}
        return 0;
    }
int nArr, numNeed;
string s;
int dp[MAX][MAX][MAX];
int G[MAX];
int F(int l, int r, int cur){
    if (l > r) return 1;
    if (cur == numNeed) return 1;
    int &res = dp[l][r][cur];
    if (~res) return res;

    int prv = G[l - 1] + (G[nArr] - G[r]) - cur;
    res = 0;
    res |= !F(l + 1, r, prv + (s[l] == 'C'));
    res |= !F(l, r - 1, prv + (s[r] == 'C'));
    return res;
}
void Whisper(){
    cin >> nArr >> numNeed >> s;
    s = '@' + s;
    for (int i = 1; i <= nArr; ++i) G[i] = G[i - 1] + (s[i] == 'C');
    memset(dp, -1, sizeof dp);
    cout << (F(1, nArr, 0) ? "DA" : "NE");
}


signed main(){
    setupIO();
    int Test = 1;
//    cin >> Test;
    for ( int i = 1 ; i <= Test ; i++ ){
        Whisper();
        if (i < Test) cout << '\n';
    }
}


# Verdict Execution time Memory Grader output
1 Correct 94 ms 338744 KB Output is correct
2 Correct 42 ms 338772 KB Output is correct
3 Correct 42 ms 338768 KB Output is correct
4 Correct 41 ms 338768 KB Output is correct
5 Correct 41 ms 338828 KB Output is correct
6 Correct 43 ms 338908 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 94 ms 338744 KB Output is correct
2 Correct 42 ms 338772 KB Output is correct
3 Correct 42 ms 338768 KB Output is correct
4 Correct 41 ms 338768 KB Output is correct
5 Correct 41 ms 338828 KB Output is correct
6 Correct 43 ms 338908 KB Output is correct
7 Correct 42 ms 338772 KB Output is correct
8 Correct 43 ms 338868 KB Output is correct
9 Correct 46 ms 339164 KB Output is correct
10 Correct 41 ms 338768 KB Output is correct
11 Correct 42 ms 338768 KB Output is correct
12 Correct 42 ms 338768 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 94 ms 338744 KB Output is correct
2 Correct 42 ms 338772 KB Output is correct
3 Correct 42 ms 338768 KB Output is correct
4 Correct 41 ms 338768 KB Output is correct
5 Correct 41 ms 338828 KB Output is correct
6 Correct 43 ms 338908 KB Output is correct
7 Correct 42 ms 338772 KB Output is correct
8 Correct 43 ms 338868 KB Output is correct
9 Correct 46 ms 339164 KB Output is correct
10 Correct 41 ms 338768 KB Output is correct
11 Correct 42 ms 338768 KB Output is correct
12 Correct 42 ms 338768 KB Output is correct
13 Correct 42 ms 338772 KB Output is correct
14 Correct 64 ms 338776 KB Output is correct
15 Correct 45 ms 338772 KB Output is correct
16 Correct 57 ms 338952 KB Output is correct
17 Correct 52 ms 338772 KB Output is correct
18 Correct 47 ms 338768 KB Output is correct