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 |
|
|
|
|
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 |