aquilla

Time limit: 2s Memory limit: 64MB Input: aquilla.in Output: aquilla.out

Se dă un șir de NN perechi de numere naturale (di,vi)(d_i, v_i), pentru ii de la 11 la NN.

Un subșir de indici 1i1<i2<<ikN1 \leq i_1 < i_2 < \cdots < i_k \leq N se numește șmecher dacă pentru oricare doi indici consecutivi ipi_p și ip+1i_{p+1} (pentru orice 1p<k1 \leq p < k) din acest subșir, diferența ip+1ipi_{p+1} - i_p este divizibilă cu min(dip,dip+1)\min(d_{i_p}, d_{i_{p+1}}).

Cerință

Să se determine suma produselor vi1×vi2××vikv_{i_1} \times v_{i_2} \times \cdots \times v_{i_k} pentru toate subșirurile șmechere nevide, modulo 109+710^9 + 7.

Date de intrare

Fișierul de intrare aquilla.in conține pe prima linie numărul natural NN. Pe a doua linie se află NN numere naturale d1,d2,,dNd_1, d_2, \dots, d_N, separate prin câte un spațiu. Pe a treia linie se află NN numere naturale v1,v2,,vNv_1, v_2, \dots, v_N, separate prin câte un spațiu.

Date de ieșire

Fișierul de ieșire aquilla.out va conține pe o singură linie un număr natural, reprezentând suma produselor tuturor subșirurilor șmechere nevide, modulo 109+710^9 + 7.

Restricții și precizări

  • 1N200 0001 \leq N \leq 200 \ 000;
  • 1di,vi1 000 000 0001 \leq d_i, v_i \leq 1 \ 000 \ 000 \ 000;
  • Tribunele Aquilla aprobă această problemă.
# Punctaj Restricții
1 6 N20N \leq 20
2 13 N2 000N \leq 2 \ 000
3 7 N200 000N \leq 200 \ 000 și di=1d_i = 1 pentru orice 1iN1 \leq i \leq N
4 7 N200 000N \leq 200 \ 000 și 1di21 \leq d_i \leq 2 pentru orice 1iN1 \leq i \leq N
5 14 N200 000N \leq 200 \ 000 și 1di2001 \leq d_i \leq 200 pentru orice 1iN1 \leq i \leq N
6 12 N100 000N \leq 100 \ 000 și șirul dd este crescător
7 22 N100 000N \leq 100 \ 000
8 19 Fără alte restricții

Exemplu

aquilla.in

3
2 3 2
1 10 100

aquilla.out

211

Explicații

Avem N=3N = 3 perechi: (2,1)(2, 1), (3,10)(3, 10) și (2,100)(2, 100). Să analizăm toate subșirurile de indici posibile și nevide:

(1)(1): Valid prin definiție (un singur element). Produsul este v1=1v_1 = 1.

(2)(2): Valid. Produsul este v2=10v_2 = 10.

(3)(3): Valid. Produsul este v3=100v_3 = 100.

(1,2)(1, 2): Diferența indicilor este 21=12 - 1 = 1. min(d1,d2)=min(2,3)=2\min(d_1, d_2) = \min(2, 3) = 2. Deoarece 11 nu este divizibil cu 22, acest subșir nu este șmecher.

(2,3)(2, 3): Diferența indicilor este 32=13 - 2 = 1. min(d2,d3)=min(3,2)=2\min(d_2, d_3) = \min(3, 2) = 2. Deoarece 11 nu este divizibil cu 22, acest subșir nu este șmecher.

(1,3)(1, 3): Diferența indicilor este 31=23 - 1 = 2. min(d1,d3)=min(2,2)=2\min(d_1, d_3) = \min(2, 2) = 2. Deoarece 22 este divizibil cu 22, subșirul este șmecher. Produsul este v1v3=1100=100v_1 \cdot v_3 = 1 \cdot 100 = 100.

(1,2,3)(1, 2, 3): Deoarece perechile adiacente (1,2)(1, 2) și (2,3)(2, 3) nu respectă condiția, subșirul nu este șmecher.

Suma produselor tuturor subșirurilor șmechere este: 1+10+100+100=2111 + 10 + 100 + 100 = 211. 211(mod109+7)=211211 \pmod{10^9 + 7} = 211.

Log in or sign up to be able to send submissions!