QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#829215#9549. The Magicianucup-team4435#AC ✓141ms7144kbC++2313.4kb2024-12-24 07:30:192024-12-24 07:30:25

Judging History

你现在查看的是最新测评结果

  • [2024-12-24 07:30:25]
  • 评测
  • 测评结果:AC
  • 用时:141ms
  • 内存:7144kb
  • [2024-12-24 07:30:19]
  • 提交

answer

#include "bits/stdc++.h"


#define rep(i, n) for (int i = 0; i < (n); ++i)
#define rep1(i, n) for (int i = 1; i < (n); ++i)
#define rep1n(i, n) for (int i = 1; i <= (n); ++i)
#define repr(i, n) for (int i = (n) - 1; i >= 0; --i)
#define pb push_back
#define eb emplace_back
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define each(x, a) for (auto &x : a)
#define ar array
#define vec vector
#define range(i, n) rep(i, n)

using namespace std;

using ll = long long;
using ull = unsigned long long;
using ld = long double;
using str = string;
using pi = pair<int, int>;
using pl = pair<ll, ll>;

using vi = vector<int>;
using vl = vector<ll>;
using vpi = vector<pair<int, int>>;
using vvi = vector<vi>;

int Bit(int mask, int b) { return (mask >> b) & 1; }

template<class T>
bool ckmin(T &a, const T &b) {
    if (b < a) {
        a = b;
        return true;
    }
    return false;
}

template<class T>
bool ckmax(T &a, const T &b) {
    if (b > a) {
        a = b;
        return true;
    }
    return false;
}

// [l, r)
template<typename T, typename F>
T FindFirstTrue(T l, T r, const F &predicat) {
    --l;
    while (r - l > 1) {
        T mid = l + (r - l) / 2;
        if (predicat(mid)) {
            r = mid;
        } else {
            l = mid;
        }
    }
    return r;
}


template<typename T, typename F>
T FindLastFalse(T l, T r, const F &predicat) {
    return FindFirstTrue(l, r, predicat) - 1;
}

const int INFi = 2e9;
const ll INF = 2e18;

/*
 ! WARNING: MOD must be prime if you use division or .inv().
 ! WARNING: 2 * (MOD - 1) must be smaller than INT_MAX
 * Use .value to get the stored value.
 */
template<typename T>
int normalize(T value, int mod) {
    if (value < -mod || value >= 2 * mod) value %= mod;
    if (value < 0) value += mod;
    if (value >= mod) value -= mod;
    return value;
}

template<int mod>
struct static_modular_int {
    static_assert(mod - 2 <= std::numeric_limits<int>::max() - mod, "2(mod - 1) <= INT_MAX");
    using mint = static_modular_int<mod>;

    int value;

    static_modular_int() : value(0) {}
    static_modular_int(const mint &x) : value(x.value) {}

    template<typename T, typename U = std::enable_if_t<std::is_integral<T>::value>>
    static_modular_int(T value) : value(normalize(value, mod)) {}

    static constexpr int get_mod() {
        return mod;
    }

    template<typename T>
    mint power(T degree) const {
        mint prod = 1, a = *this;
        for (; degree > 0; degree >>= 1, a *= a)
            if (degree & 1)
                prod *= a;

        return prod;
    }

    mint inv() const {
        return power(mod - 2);
    }

    mint& operator=(const mint &x) {
        value = x.value;
        return *this;
    }

    mint& operator+=(const mint &x) {
        value += x.value;
        if (value >= mod) value -= mod;
        return *this;
    }

    mint& operator-=(const mint &x) {
        value -= x.value;
        if (value < 0) value += mod;
        return *this;
    }

    mint& operator*=(const mint &x) {
        value = int64_t(value) * x.value % mod;
        return *this;
    }

    mint& operator/=(const mint &x) {
        return *this *= x.inv();
    }

    friend mint operator+(const mint &x, const mint &y) {
        return mint(x) += y;
    }

    friend mint operator-(const mint &x, const mint &y) {
        return mint(x) -= y;
    }

    friend mint operator*(const mint &x, const mint &y) {
        return mint(x) *= y;
    }

    friend mint operator/(const mint &x, const mint &y) {
        return mint(x) /= y;
    }

    mint& operator++() {
        ++value;
        if (value == mod) value = 0;
        return *this;
    }

    mint& operator--() {
        --value;
        if (value == -1) value = mod - 1;
        return *this;
    }

    mint operator++(int) {
        mint prev = *this;
        value++;
        if (value == mod) value = 0;
        return prev;
    }

    mint operator--(int) {
        mint prev = *this;
        value--;
        if (value == -1) value = mod - 1;
        return prev;
    }

    mint operator-() const {
        return mint(0) - *this;
    }

    bool operator==(const mint &x) const {
        return value == x.value;
    }

    bool operator!=(const mint &x) const {
        return value != x.value;
    }

    bool operator<(const mint &x) const {
        return value < x.value;
    }

    template<typename T>
    explicit operator T() {
        return value;
    }

    friend std::istream& operator>>(std::istream &in, mint &x) {
        std::string s;
        in >> s;
        x = 0;
        bool neg = s[0] == '-';
        for (const auto c : s)
            if (c != '-')
                x = x * 10 + (c - '0');

        if (neg)
            x *= -1;

        return in;
    }

    friend std::ostream& operator<<(std::ostream &out, const mint &x) {
        return out << x.value;
    }

    static int primitive_root() {
        if constexpr (mod == 1'000'000'007)
            return 5;
        if constexpr (mod == 998'244'353)
            return 3;
        if constexpr (mod == 786433)
            return 10;

        static int root = -1;
        if (root != -1)
            return root;

        std::vector<int> primes;
        int value = mod - 1;
        for (int i = 2; i * i <= value; i++)
            if (value % i == 0) {
                primes.push_back(i);
                while (value % i == 0)
                    value /= i;
            }

        if (value != 1)
            primes.push_back(value);

        for (int r = 2;; r++) {
            bool ok = true;
            for (auto p : primes)
                if ((mint(r).power((mod - 1) / p)).value == 1) {
                    ok = false;
                    break;
                }

            if (ok)
                return root = r;
        }
    }
};

// constexpr int MOD = 1'000'000'007;
 constexpr int MOD = 998'244'353;
using mint = static_modular_int<MOD>;

/*
 ! WARNING: MOD must be prime.
 * Define modular int class above it.
 * No need to run any init function, it dynamically resizes the data.
 */
namespace combinatorics {
    std::vector<mint> fact_, ifact_, inv_;

    void resize_data(int size) {
        if (fact_.empty()) {
            fact_ = {mint(1), mint(1)};
            ifact_ = {mint(1), mint(1)};
            inv_ = {mint(0), mint(1)};
        }
        for (int pos = fact_.size(); pos <= size; pos++) {
            fact_.push_back(fact_.back() * mint(pos));
            inv_.push_back(-inv_[MOD % pos] * mint(MOD / pos));
            ifact_.push_back(ifact_.back() * inv_[pos]);
        }
    }

    struct combinatorics_info {
        std::vector<mint> &data;

        combinatorics_info(std::vector<mint> &data) : data(data) {}

        mint operator[](int pos) {
            if (pos >= static_cast<int>(data.size())) {
                resize_data(pos);
            }
            return data[pos];
        }
    } fact(fact_), ifact(ifact_), inv(inv_);

    // From n choose k.
    // O(max(n)) in total.
    mint choose(int n, int k) {
        if (n < k || k < 0 || n < 0) {
            return mint(0);
        }
        return fact[n] * ifact[k] * ifact[n - k];
    }

    // From n choose k.
    // O(min(k, n - k)).
    mint choose_slow(int64_t n, int64_t k) {
        if (n < k || k < 0 || n < 0) {
            return mint(0);
        }
        k = std::min(k, n - k);
        mint result = 1;
        for (int i = k; i >= 1; i--) {
            result *= (n - i + 1);
            result *= inv[i];
        }
        return result;
    }

    // Number of balanced bracket sequences with n open and m closing brackets.
    mint catalan(int n, int m) {
        if (m > n || m < 0) {
            return mint(0);
        }
        return choose(n + m, m) - choose(n + m, m - 1);
    }

    // Number of balanced bracket sequences with n open and closing brackets.
    mint catalan(int n) {
        return catalan(n, n);
    }
} // namespace combinatorics

using namespace combinatorics;


namespace ext_combinatorics {
    // distribute n equal elements into k groups
    mint distribute(int n, int k) {
        return choose(n + k - 1, n);
    }

    // count number of seqs with n '(' and m ')' and bal always >= 0
    mint catalan_nm(int n, int m) {
        assert(n >= m);
        return choose(m + n, m) - choose(m + n, m - 1);
    }

    mint catalan(int n) {
        return catalan_nm(n, n);
    }

    // count number of bracket seqs, bal always >= 0
    mint catalan_bal(int n, int start_balance = 0, int end_balance = 0) {
        if ((n + start_balance + end_balance) % 2 != 0) return 0;
        if (start_balance < 0 || end_balance < 0) return 0;
        return choose(n, (n + end_balance - start_balance) / 2) - choose(n, (n - end_balance - start_balance - 2) / 2);
    }

    // from (0, 0) to (x, y)
    mint grid_path(int x, int y) {
        return choose(x + y, x);
    }

    // from (0, 0) to (x, y) not touch low y=x+b
    mint grid_path_low(int x, int y, int b) {
        if (b >= 0) return 0;
        return grid_path(x, y) - grid_path(y - b, x + b);
    }

    // from (0, 0) to (x, y) not touch up y=x+b
    // O((x + y) / |b2 - b1|)
    mint grid_path_up(int x, int y, int b) {
        if (b <= 0) return 0;
        return grid_path(x, y) - grid_path(y - b, x + b);
    }

    // from (0, 0) to (x, y) touch L -LU +LUL -LULU ....
    // O((x + y) / |b2 - b1|)
    mint grid_calc_LUL(int x, int y, int b1, int b2) {
        swap(x, y);
        x -= b1;
        y += b1;
        if (x < 0 || y < 0) return 0;
        return grid_path(x, y) - grid_calc_LUL(y, x, -b2, -b1);
    }

    // from (0, 0) to (x, y) not touch low y=x+b1, up y=x+b2
    // O((x + y) / |b2 - b1|)
    mint grid_path_2(int x, int y, int b1, int b2) {
        return grid_path(x, y) - grid_calc_LUL(x, y, b1, b2) - grid_calc_LUL(y, x, -b2, -b1);
    }

    // probability what we end in L+R after infinity random walk, if we start at L, and absorbing points is 0, L+R.
    mint gambler_ruin_right(int L, int R, mint p_right) {
        assert(L >= 1 && R >= 1);
        if (p_right * 2 == 1) return mint(L) / mint(L + R);
        if (p_right == 1) return 1;
        if (p_right == 0) return 0;
        mint v = (1 - p_right) / p_right;
        return (1 - v.power(L)) / (1 - v.power(L + R));
    }

    mint gambler_ruin_left(int L, int R, mint p_left) {
        return 1 - gambler_ruin_right(L, R, 1 - p_left);
    }
} // namespace ext_combinatorics

map<pair<ar<int, 5>, ar<int, 6>>, int> mem;

int calc(pair<ar<int, 5>, ar<int, 6>> state) {
    if (mem.contains(state)) return mem[state];
    int res = 0;
    ar<int, 5> cards = state.first;
    ar<int, 6> bonus = state.second;

    rep(i, 4) {
        res += cards[i] / 5;
        cards[i] %= 5;
    }

    if (res != 0) return mem[state] = calc({cards, bonus}) + res;

    int answer = 0;

    rep(i, 4) {
        if (cards[i] + cards[4] >= 5) {
            auto cards2 = cards;
            cards2[4] -= 5 - cards2[i];
            cards2[i] = 0;
            ckmax(answer, calc({cards2, bonus}) + 1);
        }
    }

    rep(j, 4) {
        if (bonus[j]) {
            auto bonus2 = bonus;
            bonus2[j]--;

            function<void(ar<int, 5>, int, int)> rec = [&] (ar<int, 5> cur, int t, int took) {
                if (t == j) t++;
                if (t == 4) {
                    if (took == 0) return;
                    cur[j] += took;
                    assert(took <= 3);
                    ckmax(answer, calc({cur, bonus2}));
                    return;
                }
                for(int v = 0; v <= cards[t] && took + v <= 3; ++v) {
                    rec(cur, t + 1, took + v);
                    cur[t]--;
                }
            };
            rec(cards, 0, 0);
        }
    }

    if (bonus[4]) {
        auto bonus2 = bonus;
        bonus2[4]--;
        rep(j, 4) {
            if (cards[j]) {
                auto cards2 = cards;
                cards2[j]--;
                cards2[4]++;
                ckmax(answer, calc({cards2, bonus2}));
            }
        }
    }
    if (bonus[5]) {
        auto bonus2 = bonus;
        bonus2[5]--;
        rep(j, 4) {
            if (cards[j]) {
                rep(e, 5) {
                    if (!cards[e] || e == j) continue;
                    auto cards2 = cards;
                    cards2[j]--;
                    cards2[e]++;
                    ckmax(answer, calc({cards2, bonus2}));
                }
            }
        }
    }
    return mem[{cards, bonus}] = answer + res;
}

void solve() {
    int n; cin >> n;
    ar<int, 5> cards = {0, 0, 0, 0, 0};
    ar<int, 6> bonus = {0, 0, 0, 0, 0, 0};
    rep(i, n) {
        string s; cin >> s;
        reverse(all(s));
        if (s[0] == 'D') {
            cards[0]++;
        } else if (s[0] == 'C') {
            cards[1]++;
        } else if (s[0] == 'H') {
            cards[2]++;
        } else {
            cards[3]++;
        }
    }
    rep(i, 6) cin >> bonus[i];
    cout << calc({cards, bonus}) << '\n';
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout << setprecision(12) << fixed;
    int t = 1;
    cin >> t;
    rep(i, t) {
        solve();
    }
    return 0;
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3632kb

input:

4
5
2H 3H 4H 5H 6D
1 1 1 1 0 0
5
2S 3S 4D 5C 6D
0 0 1 0 1 1
5
2S 3S 4D 5C 6D
0 0 1 0 1 0
13
AS 2S 3S 4S 5H 6H 7H 8H 9H TH JH QH KH
0 0 0 0 0 1

output:

1
1
0
2

result:

ok 4 lines

Test #2:

score: 0
Accepted
time: 1ms
memory: 3596kb

input:

13
10
AD 2D 3D 4D 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AH 2D 3D 4D 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AH 2H 3D 4D 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AH 2H 3H 4D 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AH 2H 3H 4H 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AS 2S 3S 4S 5S 6S 7S 8S 9S TS
0 1 0 0 0 0
10
AC 2S 3S 4S 5S 6S 7S 8S ...

output:

2
1
2
2
2
2
1
2
2
2
0
0
0

result:

ok 13 lines

Test #3:

score: 0
Accepted
time: 52ms
memory: 5276kb

input:

2
52
AH AD AC AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8H 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH JD JC JS QH QD QC QS KH KD KC KS
1 1 1 1 1 1
52
AH AD AC AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8H 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH J...

output:

10
10

result:

ok 2 lines

Test #4:

score: 0
Accepted
time: 12ms
memory: 4104kb

input:

9
12
2H TH 4C QC JH JC 8D KC 3C 6H TC 9S
0 0 0 1 0 0
11
5S 2C TH 8S JD 2S 7D AH 4S AC TS
1 0 0 0 0 0
11
QC 4C 5S QS 9H 5H 6H 7H 3D 7D 8D
1 1 1 0 1 1
11
AS AD 3D 8C 5H 2S JC 6C 8H QD JS
0 1 0 0 0 1
11
KC TH 4S 2H 8S 9S QC 3S AD KS 5D
0 0 1 0 0 1
12
4D 5H 6C 3D KH KS 3S 7S TC 4S 4C JS
0 1 0 1 1 0
12
J...

output:

1
2
2
1
2
2
2
2
2

result:

ok 9 lines

Test #5:

score: 0
Accepted
time: 3ms
memory: 4028kb

input:

10
10
5S 6S 4S 2D JD 3H JH 2H 4H 2C
1 1 0 1 0 0
11
3H 2D 6D 7S KD 6C 8H 2S 9H KH 3D
0 1 0 1 0 1
11
4D AH TS 6S TC 3S 9C 3C 5S JH TD
0 1 0 1 0 0
10
9H 3S TC TS 8S 6S TH 7D TD 5D
0 0 0 0 0 1
11
5H KS QH 4D 8H 6H QC 7H 8D JS JC
0 0 1 0 0 0
10
AD 5D TC 8D 5C 5S 8S QS 3C JD
0 0 0 1 0 1
10
TC TH 4S 8C JC ...

output:

2
2
2
1
1
2
2
1
2
2

result:

ok 10 lines

Test #6:

score: 0
Accepted
time: 2ms
memory: 3664kb

input:

2
52
4S 5H AD 9D 9C 4C 9S QD 2C JS 2D 3S 3D AC QS 5S KD 4D KH 9H TC 6C 6S 7D 7C KS 3H 6H KC JC AH 8H QH 3C QC TS 8C TH TD 4H 7S 6D 8S AS 5C JD JH 2H 5D 2S 8D 7H
0 0 0 1 1 1
52
9S JC 8S 2D 2S TS 4C 2C 6D KS 5H KD AH 5D 8C KC QH 6C 4D 9C 8H 5C 3H JH TD QS AC AS QC 6H 4H 7D QD 9D TH 4S 2H JD TC JS 7C A...

output:

10
10

result:

ok 2 lines

Test #7:

score: 0
Accepted
time: 1ms
memory: 3704kb

input:

3
35
9H JC 2H TH 7S 6D AS 4H 3D AD KS TS 2C 9S 5D 8H KD TC KH 5C QD 4S 3C 6C JS AC 2D JD 3H QH 9D 5S 6S JH 5H
0 1 0 0 1 0
34
TS 2H 4H 9D KD JC QS 6C 2D QD 2S JS 7C JH 7H 8H 4S 3C AD QC AS 7D KC 8S 2C 3S 8C 5D 5C AC TD 3H 4C 9H
0 1 1 1 0 0
35
6C 9H 3D TC 4D 3H 2S 8D AS JD 6H 2C 5D QH TD 9D 3S 5C 9C A...

output:

7
6
5

result:

ok 3 lines

Test #8:

score: 0
Accepted
time: 5ms
memory: 3800kb

input:

10
10
AC 7C 9S KD 4S 2C 2S 3D 6D 7H
1 1 0 1 0 1
10
9D AS 8S JS 6C KS 4D 3D 2S QC
0 1 0 0 0 0
10
QC 5H 5D 2S 7S 8S 3D 8C TS 8H
1 0 1 1 0 1
10
KD 7D 8S TC 3S 6C AS 4C 9H KC
1 0 0 0 0 0
11
8C 2C JS 6C QC 2H 5C 9H 3C AS 9D
1 0 1 0 1 0
10
8H 5D 5C QH JS JC 6H 4H 8C 7C
0 0 0 1 1 0
13
9H 4S 8D 3H KD TC 2D ...

output:

2
2
2
1
2
1
1
2
1
1

result:

ok 10 lines

Test #9:

score: 0
Accepted
time: 0ms
memory: 3656kb

input:

13
5
TH JH QD KD AD
1 0 0 0 0 0
5
TH JH QC KC AC
1 0 0 0 0 0
5
TH JH QS KS AS
1 0 0 0 0 0
5
TD JD QH KH AH
1 0 0 0 0 0
5
TD JD QC KC AC
1 0 0 0 0 0
5
TD JD QS KS AS
1 0 0 0 0 0
5
TC JC QH KH AH
1 0 0 0 0 0
5
TC JC QD KD AD
1 0 0 0 0 0
5
TC JC QS KS AS
1 0 0 0 0 0
5
TS JS QH KH AH
1 0 0 0 0 0
5
TS JS...

output:

1
0
0
1
1
1
0
1
0
0
1
0
8

result:

ok 13 lines

Test #10:

score: 0
Accepted
time: 0ms
memory: 3632kb

input:

13
5
TH JH QD KD AD
0 1 0 0 0 0
5
TH JH QC KC AC
0 1 0 0 0 0
5
TH JH QS KS AS
0 1 0 0 0 0
5
TD JD QH KH AH
0 1 0 0 0 0
5
TD JD QC KC AC
0 1 0 0 0 0
5
TD JD QS KS AS
0 1 0 0 0 0
5
TC JC QH KH AH
0 1 0 0 0 0
5
TC JC QD KD AD
0 1 0 0 0 0
5
TC JC QS KS AS
0 1 0 0 0 0
5
TS JS QH KH AH
0 1 0 0 0 0
5
TS JS...

output:

0
1
0
0
1
0
1
1
1
0
0
1
8

result:

ok 13 lines

Test #11:

score: 0
Accepted
time: 0ms
memory: 3560kb

input:

13
5
TH JH QD KD AD
0 0 1 0 0 0
5
TH JH QC KC AC
0 0 1 0 0 0
5
TH JH QS KS AS
0 0 1 0 0 0
5
TD JD QH KH AH
0 0 1 0 0 0
5
TD JD QC KC AC
0 0 1 0 0 0
5
TD JD QS KS AS
0 0 1 0 0 0
5
TC JC QH KH AH
0 0 1 0 0 0
5
TC JC QD KD AD
0 0 1 0 0 0
5
TC JC QS KS AS
0 0 1 0 0 0
5
TS JS QH KH AH
0 0 1 0 0 0
5
TS JS...

output:

1
1
1
1
0
0
1
0
0
1
0
0
8

result:

ok 13 lines

Test #12:

score: 0
Accepted
time: 0ms
memory: 3784kb

input:

13
5
TH JH QD KD AD
0 0 0 1 0 0
5
TH JH QC KC AC
0 0 0 1 0 0
5
TH JH QS KS AS
0 0 0 1 0 0
5
TD JD QH KH AH
0 0 0 1 0 0
5
TD JD QC KC AC
0 0 0 1 0 0
5
TD JD QS KS AS
0 0 0 1 0 0
5
TC JC QH KH AH
0 0 0 1 0 0
5
TC JC QD KD AD
0 0 0 1 0 0
5
TC JC QS KS AS
0 0 0 1 0 0
5
TS JS QH KH AH
0 0 0 1 0 0
5
TS JS...

output:

0
0
1
0
0
1
0
0
1
1
1
1
8

result:

ok 13 lines

Test #13:

score: 0
Accepted
time: 0ms
memory: 3856kb

input:

2
52
4S 7H 3C JH 3H 2H 6H 2D 8C 6S 5H KC 8S TC JS 2C 7S 6D TD 2S 9S TS 3D 9D JD 5D 8H KS AC TH 5S JC 9C 4D QC QD 6C AS 3S 7C KD 8D AH KH 7D 4H 4C 5C AD QS 9H QH
0 0 0 1 0 0
52
6D 7C 5H 2S 9S 9C TS 4H 6H 3S QS KC KH KD 5S 4C 8D 3D JD TC 8H 6C QH KS QC 3H 2H AS 9D 3C 7H 8S TD AD 9H JS TH 7S 5C 4S JC J...

output:

9
9

result:

ok 2 lines

Test #14:

score: 0
Accepted
time: 1ms
memory: 3692kb

input:

3
36
TH 6D JC 7C TS 8S 6H 6S AS 4C 8H TD 4D JD KS 5S 5D 7S 7D 2S AH KD JH 3S 2C 5C 9C 8D QS 9D 4S 9S JS 6C AD 3C
0 0 0 0 1 1
34
JD 7C 5S 9S KD 2D KH 4C 8C 3S 6C 4D 5H TC 5C 7H QC 6S 9D 9H 6H 6D 3D 8D 3H 8H 2C KS 7D JH 2S JC 3C QD
0 0 1 1 0 0
34
KC 6D 5S TD 2D 4D AD QH 2C 6H 5C QD 8H 8S 2H TH 4H AS J...

output:

7
6
6

result:

ok 3 lines

Test #15:

score: 0
Accepted
time: 0ms
memory: 3640kb

input:

4
26
KH JH 2S 9S 3S QS KD 8D QD TH TC 2D JS 5D 7S 8S 9D 4D JD AD 2C KC 3H 8H 3D 6C
0 0 1 0 1 1
26
QH 7D AC 7S 6C 4D 4S 8D 7H 8S 6S 3H AS 6H 5H TC 5C 6D 8H KC QC JH 2C 2H TH 9C
0 0 0 0 0 0
26
TC 6C TD 2S 6H 9S 4D AS 3D AD 5D KC 7H KD JH TS TH QC 5S JD 7S 2D KS QH 5H 7D
1 0 0 0 0 0
26
TC 2C 9D KH 8H 7...

output:

5
3
4
5

result:

ok 4 lines

Test #16:

score: 0
Accepted
time: 1ms
memory: 3676kb

input:

5
21
3S 3H 9H 5H 6C 6H 2C 7D 4D 7S 7H KS 9C 8H 5S 8S 6S 2H KH TH 3C
1 0 0 1 0 0
21
QH 4S AH 8C 7C 6C 5S KS 3H AS 9H JH 5C KC JC 4C 3C 4D JS 4H 3S
0 0 1 1 1 0
21
4H AH KS 8H TS 9D QD JH 2C 2H KD QH JD 8C 4D 4S KC 9H 2D 3C 7C
1 0 0 0 1 1
21
KS AS 7C QH TD TS 2C 8D 8H 9H 4H 3H 2D QC 3D 4C 5S 6S 5H 3S 4...

output:

3
4
4
4
4

result:

ok 5 lines

Test #17:

score: 0
Accepted
time: 2ms
memory: 4060kb

input:

7
14
3D 7S 9S QS 5H 9H AC 2S TD KH 5D KS JC QC
1 0 0 0 0 0
14
8D 5D AD 2H AC TC JD TS KH JS 3D 2D 8C 9C
0 0 0 0 0 0
15
TS 8H 6S 5S 7C JS 2S 7S 8C AS 8S 5C 4H 4S TH
0 1 0 0 0 0
15
QH 3S JH QD 5S 9C 5C 7H 8D TD QC 5D 2S 5H 7S
1 1 1 0 0 1
16
JS 8C JC 8S 9H AC 3C 4D 5C 8D JH 7S 4S QH 9D 9C
1 0 0 0 0 0
1...

output:

2
1
2
3
2
2
3

result:

ok 7 lines

Test #18:

score: 0
Accepted
time: 1ms
memory: 3700kb

input:

1
36
AH 2H 3H 4H 5H 6H 7H 8H 9H AC 2C 3C 4C 5C 6C 7C 8C 9C AD 2D 3D 4D 5D 6D 7D 8D 9D AS 2S 3S 4S 5S 6S 7S 8S 9S
1 1 1 0 0 0

output:

7

result:

ok single line: '7'

Test #19:

score: 0
Accepted
time: 1ms
memory: 3608kb

input:

7
15
3C 9D 8C 6S 5S QS 8D AH 3D 5C TD QD 9S 6C 6D
1 1 1 0 0 0
16
3C 8C JS 3S AC 7D QS KC JH KS AS 2S 9H 4D 2H 5H
0 1 0 0 0 0
14
JS 9H AC 7C KH 5H 4H 2S KC TC 2D QS AD QC
0 0 0 0 1 0
14
JH KH 6H KC 9H TH 2S QS 4S 3S JS 8D 4C AH
1 0 0 0 1 0
15
5D 7S 8S 2C TH TC 5C KD 4C QH 2S 6D 3H AS KS
0 0 0 0 1 0
1...

output:

2
2
2
2
2
3
2

result:

ok 7 lines

Test #20:

score: 0
Accepted
time: 0ms
memory: 3856kb

input:

3
35
8H 8D 3H JD 4S AD KC JC 5D KH QD JH 5C QS 3C 2S 4H 3S 7D AH 8S 6C TS JS KS 6S 7C TH QH 9H 9D 8C AC 6H AS
0 0 1 0 1 0
34
KC AS KS 3S 5H JC TD 2C JS KD 4C 8C AD QS 9D 5S AC 3H 2H 3C QD 9S 6D 4S QC 8H 6C TS 7C 4D 9H 6S QH TC
0 1 0 0 1 1
35
3H 9C 2C 5S TS TC QD AS 8C 5D 4H 6C 7C 9H 6S 7H KS 2S 8D A...

output:

6
6
7

result:

ok 3 lines

Test #21:

score: 0
Accepted
time: 0ms
memory: 3636kb

input:

5
21
TH 9C 5S 9H KD JD JS 3C KH 3S 6S 7D 8S JH 4D 7H 9D 6D KC 7S 4C
1 1 0 1 0 0
20
6C QC 2D 2S 4H QS 8S KD 9H 3H 7H JD 7D KC 2C 5C 8D 7C 4S JC
1 0 0 0 1 1
21
JC 9C 8H 2D TS QH TC 6C 6S 6D 9S 4D KC 7C 4C 5C QD JS 8D AD QC
1 0 0 1 0 0
22
2C 6S 8S JC 9H 8H 4S 8C JD 4H 5S 5H QH 6H 6D 9D KC 7S 2S 3D 8D T...

output:

4
4
3
4
2

result:

ok 5 lines

Test #22:

score: 0
Accepted
time: 52ms
memory: 4980kb

input:

2
52
AH AD AC AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8H 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH JD JC JS QH QD QC QS KH KD KC KS
1 1 1 1 1 1
52
AC AH AD AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8H 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH J...

output:

10
10

result:

ok 2 lines

Test #23:

score: 0
Accepted
time: 98ms
memory: 6484kb

input:

3
52
AH AD AC AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8H 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH JD JC JS QH QD QC QS KH KD KC KS
1 1 1 1 1 1
51
AC AH AD AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH JD J...

output:

10
10
0

result:

ok 3 lines

Test #24:

score: 0
Accepted
time: 94ms
memory: 6012kb

input:

4
52
AH AD AC AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8H 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH JD JC JS QH QD QC QS KH KD KC KS
1 1 1 1 1 1
1
JD
1 1 1 1 1 1
50
AC AH AD AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 8D 8C 8S 9H 9D 9C 9S TH TD...

output:

10
0
10
0

result:

ok 4 lines

Test #25:

score: 0
Accepted
time: 48ms
memory: 4956kb

input:

13
52
AH AD AC AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8H 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH JD JC JS QH QD QC QS KH KD KC KS
1 1 1 1 1 1
1
JD
1 1 1 1 1 1
41
AC AD AS 2H 2C 2S 3H 3C 4H 4D 4C 5H 5D 5S 6D 6S 7H 7D 7C 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH JD JS QH QD Q...

output:

10
0
8
0
0
0
0
0
0
0
0
0
0

result:

ok 13 lines

Test #26:

score: 0
Accepted
time: 141ms
memory: 7144kb

input:

5
52
AH AD AC AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8H 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH JD JC JS QH QD QC QS KH KD KC KS
1 1 1 1 1 1
26
AH AD 2C 2S 3H 3D 4C 4S 5H 5D 6C 6S 7H 7D 8C 8S 9H 9D TC TS JH JD QC QS KH KS
1 1 1 1 1 1
13
7H 7D 8C 8S 9H 9D TC TS JH JD Q...

output:

10
5
2
1
1

result:

ok 5 lines

Extra Test:

score: 0
Extra Test Passed