Submission #4046376


Source Code Expand

#include <bits/stdc++.h>

using namespace std;
using ll = long long;
using ull = unsigned long long;

const int MD = 1e9+7;
struct Mint {
    typedef Mint M;
    int v;
    Mint(int _v = 0) : v(_v) {}
    M& operator += (const M &r) {
        if ((v += r.v) >= MD) v -= MD;
        return *this;
    }
    M& operator -= (const M &r) {
        if ((v -= r.v) < 0) v += MD;
        return *this;
    }
    M& operator *= (const M &r) {
        v = ll(v)*r.v%MD;
        return *this;
    }
    M operator + (const M &r) const { return M(*this) += r; }
    M operator - (const M &r) const { return M(*this) -= r; }
    M operator * (const M &r) const { return M(*this) *= r; }
    M pow(int n) const {
        M x = *this, r = 1;
        while (n) {
            if (n&1) r *= x;
            x *= x;
            n >>= 1;
        }
        return r;
    }
    M inv() const { return this->pow(MD-2); }
};

const int B = 999999;
int N, M, K;
Mint fac[B], ifac[B];

Mint C(int n, int m) {
    if (n < 0 || m < 0 || n < m) return Mint(0);
    return fac[n]*ifac[m]*ifac[n-m];
}

void first() {
    fac[0] = 1;
    for (int i = 1; i < B; i++) fac[i] = fac[i-1]*Mint(i);
    ifac[B-1] = fac[B-1].inv();
    for (int i = B-2; i >= 0; i--) ifac[i] = ifac[i+1]*Mint(i+1);
}

int main() {
    first();
    cin >> N >> M >> K;
    if (M > K) swap(M, K);

    Mint ans = 0;

    for (int i = 0; i <= M; i++) {
        ans += C(N-1+i, N-1) * Mint(2).pow(i) * Mint(3).pow(M+K-i);
    }
    Mint sm = Mint(2).pow(M);
    for (int i = M+1; i <= M+K; i++) {
        sm = Mint(2) * sm - C(i-1, M) + C(i-1, i-2-M) - C(i, i-1-M);
        ans += C(N-1+i, N-1) * sm * Mint(3).pow(M+K-i);
    }

    cout << ans.v << endl;

    return 0;
}

Submission Info

Submission Time
Task F - Card Game for Three
User hfccccccccccccc
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1786 Byte
Status WA
Exec Time 117 ms
Memory 8064 KB

Judge Result

Set Name Sample subtask1 All
Score / Max Score 0 / 0 0 / 500 0 / 600
Status AC
AC × 1
WA × 9
AC × 6
WA × 18
Set Name Test Cases
Sample
subtask1 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt
Case Name Status Exec Time Memory
sample_01.txt AC 17 ms 8064 KB
sample_02.txt AC 17 ms 8064 KB
sample_03.txt AC 17 ms 8064 KB
subtask1_01.txt WA 17 ms 8064 KB
subtask1_02.txt AC 17 ms 8064 KB
subtask1_03.txt WA 17 ms 8064 KB
subtask1_04.txt WA 17 ms 8064 KB
subtask1_05.txt WA 17 ms 8064 KB
subtask1_06.txt WA 17 ms 8064 KB
subtask1_07.txt WA 17 ms 8064 KB
subtask1_08.txt WA 17 ms 8064 KB
subtask1_09.txt WA 17 ms 8064 KB
subtask1_10.txt WA 17 ms 8064 KB
subtask2_01.txt AC 117 ms 8064 KB
subtask2_02.txt WA 106 ms 8064 KB
subtask2_03.txt WA 58 ms 8064 KB
subtask2_04.txt WA 51 ms 8064 KB
subtask2_05.txt WA 101 ms 8064 KB
subtask2_06.txt WA 117 ms 8064 KB
subtask2_07.txt WA 117 ms 8064 KB
subtask2_08.txt WA 53 ms 8064 KB
subtask2_09.txt WA 52 ms 8064 KB
subtask2_10.txt WA 117 ms 8064 KB
subtask2_11.txt AC 17 ms 8064 KB