Submission #1514561


Source Code Expand

#include <iostream>
#include <vector>
using namespace std;

using ll = long long;

const ll MOD = 1e9 + 7;

ll factorial_inv[2010];

// a^n mod MOD
ll pow_mod(ll a, ll n) {
    if (n == 0) return 1;
    else if (n % 2 == 0) {
        ll x = pow_mod(a, n / 2);
        return (x * x) % MOD;
    } else {
        return (a * pow_mod(a, n - 1)) % MOD;
    }
}

// nCk
ll nCk(ll n, ll k) {
    ll res = 1;
    for (int i = 0; i < k; i++) res = (res * (n - i)) % MOD;
    return (res * factorial_inv[k]) % MOD;
}

int main() {
    int N;
    cin >> N;

    ll fact = 1;
    for (ll i = 1; i <= N; i++) fact = (i * fact) % MOD;
    factorial_inv[N] = pow_mod(fact, MOD - 2);
    for (ll i = N; i >= 1; i--) factorial_inv[i - 1] = (factorial_inv[i] * i) % MOD;

    vector<ll> A(N);
    for (int i = 0; i < N; i++) {
        cin >> A[i];
    }

    vector<int> next_record(N, -1);     // next_record[i]:=i+1以降の-1でないAの添え字
    int idx = -1;
    for (int i = N - 1; i >= 0; i--) {
        if (A[i] >= 0) {
            next_record[i] = idx;
            idx = i;
        }
    }

    ll ans = 1;
    for (int i = 0; i < N; i++) {
        if (next_record[i] < 0) continue;
        ll a = A[next_record[i]] - A[i],
           b = next_record[i] - i - 1;

        ans *= nCk(a + b, b);
        ans %= MOD;
    }

    cout << ans << endl;

    return 0;
}

Submission Info

Submission Time
Task C - タコヤ木
User myusa
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1425 Byte
Status AC
Exec Time 2 ms
Memory 256 KB

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3
Score / Max Score 0 / 0 50 / 50 30 / 30 20 / 20
Status
AC × 3
AC × 14
AC × 26
AC × 39
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 sample_01.txt, sample_02.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, subtask1_11.txt, subtask1_12.txt
Subtask2 sample_01.txt, sample_02.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, subtask1_11.txt, subtask1_12.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, subtask2_12.txt
Subtask3 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, subtask1_11.txt, subtask1_12.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, subtask2_12.txt, subtask3_01.txt, subtask3_02.txt, subtask3_03.txt, subtask3_04.txt, subtask3_05.txt, subtask3_06.txt, subtask3_07.txt, subtask3_08.txt, subtask3_09.txt, subtask3_10.txt, subtask3_11.txt, subtask3_12.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 1 ms 256 KB
subtask1_04.txt AC 1 ms 256 KB
subtask1_05.txt AC 1 ms 256 KB
subtask1_06.txt AC 1 ms 256 KB
subtask1_07.txt AC 1 ms 256 KB
subtask1_08.txt AC 1 ms 256 KB
subtask1_09.txt AC 1 ms 256 KB
subtask1_10.txt AC 1 ms 256 KB
subtask1_11.txt AC 1 ms 256 KB
subtask1_12.txt AC 1 ms 256 KB
subtask2_01.txt AC 1 ms 256 KB
subtask2_02.txt AC 1 ms 256 KB
subtask2_03.txt AC 1 ms 256 KB
subtask2_04.txt AC 1 ms 256 KB
subtask2_05.txt AC 1 ms 256 KB
subtask2_06.txt AC 1 ms 256 KB
subtask2_07.txt AC 2 ms 256 KB
subtask2_08.txt AC 2 ms 256 KB
subtask2_09.txt AC 1 ms 256 KB
subtask2_10.txt AC 2 ms 256 KB
subtask2_11.txt AC 2 ms 256 KB
subtask2_12.txt AC 2 ms 256 KB
subtask3_01.txt AC 1 ms 256 KB
subtask3_02.txt AC 1 ms 256 KB
subtask3_03.txt AC 1 ms 256 KB
subtask3_04.txt AC 2 ms 256 KB
subtask3_05.txt AC 1 ms 256 KB
subtask3_06.txt AC 2 ms 256 KB
subtask3_07.txt AC 2 ms 256 KB
subtask3_08.txt AC 2 ms 256 KB
subtask3_09.txt AC 2 ms 256 KB
subtask3_10.txt AC 2 ms 256 KB
subtask3_11.txt AC 2 ms 256 KB
subtask3_12.txt AC 2 ms 256 KB