Submission #9425232
Source Code Expand
import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
import numpy as np
MOD = 10 ** 9 + 7
N = int(readline())
X = np.array(read().split(),np.int64)
def cumprod(A, MOD = MOD):
L = len(A); Lsq = int(L**.5+1)
A = np.resize(A, Lsq**2).reshape(Lsq,Lsq)
for n in range(1,Lsq):
A[:,n] *= A[:,n-1]; A[:,n] %= MOD
for n in range(1,Lsq):
A[n] *= A[n-1,-1]; A[n] %= MOD
return A.ravel()[:L]
def make_fact(U, MOD = MOD):
x = np.arange(U, dtype = np.int64); x[0] = 1
fact = cumprod(x, MOD)
x = np.arange(U, 0, -1, dtype=np.int64); x[0] = pow(int(fact[-1]), MOD-2, MOD)
fact_inv = cumprod(x, MOD)[::-1]
return fact,fact_inv
U = 10 ** 5 + 5
fact, fact_inv = make_fact(U)
inv = np.zeros(U,np.int64)
inv[1:] = fact_inv[1:] * fact[:-1] % MOD
coef = inv[1:N].cumsum() % MOD
answer = (np.diff(X) * coef % MOD).sum() % MOD
answer *= fact[N-1]; answer %= MOD
print(answer)
Submission Info
| Submission Time | |
|---|---|
| Task | B - Fusing Slimes |
| User | maspy |
| Language | Python (3.4.3) |
| Score | 600 |
| Code Size | 1016 Byte |
| Status | AC |
| Exec Time | 192 ms |
| Memory | 19492 KiB |
Judge Result
| Set Name | Sample | Subtask | All | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 400 / 400 | 200 / 200 | ||||||
| Status |
|
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01, sample_02 |
| Subtask | small_01, small_02, small_03, small_04, small_05, small_06, small_07, small_08, small_09, small_10, small_max_01, small_max_02, small_max_03, small_max_04, small_max_05 |
| All | max_01, max_02, max_03, max_04, max_05, random_01, random_02, random_03, random_04, random_05, random_06, random_07, random_08, random_09, random_10, sample_01, sample_02, small_01, small_02, small_03, small_04, small_05, small_06, small_07, small_08, small_09, small_10, small_max_01, small_max_02, small_max_03, small_max_04, small_max_05 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| max_01 | AC | 191 ms | 19488 KiB |
| max_02 | AC | 190 ms | 19492 KiB |
| max_03 | AC | 190 ms | 19492 KiB |
| max_04 | AC | 191 ms | 19492 KiB |
| max_05 | AC | 192 ms | 19492 KiB |
| random_01 | AC | 175 ms | 18260 KiB |
| random_02 | AC | 190 ms | 19296 KiB |
| random_03 | AC | 183 ms | 18740 KiB |
| random_04 | AC | 179 ms | 18564 KiB |
| random_05 | AC | 171 ms | 17920 KiB |
| random_06 | AC | 181 ms | 18636 KiB |
| random_07 | AC | 173 ms | 18068 KiB |
| random_08 | AC | 178 ms | 18472 KiB |
| random_09 | AC | 184 ms | 18908 KiB |
| random_10 | AC | 179 ms | 18580 KiB |
| sample_01 | AC | 170 ms | 17920 KiB |
| sample_02 | AC | 171 ms | 17920 KiB |
| small_01 | AC | 170 ms | 17920 KiB |
| small_02 | AC | 169 ms | 17920 KiB |
| small_03 | AC | 169 ms | 17836 KiB |
| small_04 | AC | 169 ms | 17920 KiB |
| small_05 | AC | 169 ms | 17920 KiB |
| small_06 | AC | 171 ms | 17920 KiB |
| small_07 | AC | 171 ms | 17836 KiB |
| small_08 | AC | 170 ms | 17920 KiB |
| small_09 | AC | 169 ms | 17836 KiB |
| small_10 | AC | 170 ms | 17920 KiB |
| small_max_01 | AC | 171 ms | 17920 KiB |
| small_max_02 | AC | 170 ms | 17920 KiB |
| small_max_03 | AC | 169 ms | 17920 KiB |
| small_max_04 | AC | 171 ms | 17920 KiB |
| small_max_05 | AC | 170 ms | 17836 KiB |