Fişierul intrare/ieşire:sandwich.in, sandwich.outSursăJunior Challenge 2025
AutorMuresan Luca ValentinAdăugată devlad2009Vlad Tutunaru vlad2009
Timp execuţie pe test0.7 secLimită de memorie262144 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Sandwich

În Tărâmul Ooo, Jake vrea să pregătească sandwichul magic perfect. Pe o masă sunt aliniate N ingrediente numerotate de la 1 la N, iar ingredientul i are o valoare de „gust” ai.

Pentru orice subsecvenţă de ingrediente al al+1 ... ar, Jake poate alege un subşir de poziţii strict crescător (eventual gol) astfel încât să nu existe două poziţii adiacente alese. Gustul total acelui subşir este: ai1 + ai2 + ... + aik, cu l ≤ i1 < i2 < ... < ik ≤ r şi ij + 1 < ij+1 pentru orice 1 ≤ j < k.

Definim  f(a[l..r]) = gustul total maxim posibil pentru un astfel de subşir.

Jake vrea să ştie suma celor mai gustoase sandwichuri pe care le poate face, dacă ia în calcul toate subsecvenţele posibile ale mesei. Cu alte cuvinte, calculaţi:

 S = \sum_{1 \leq l \leq r \leq n} f(a[l..r])

Date de intrare

Fişierul de intrare sandwich.in conţine numerele N, x, y, z şi a1. Şirul a este codificat astfel:

ai = (ai-1 * x + y) % z pentru orice 2 ≤ i ≤ N

Date de ieşire

În fişierul de ieşire sandwich.out afişaţi valoarea lui S modulo 109 + 7.

Restricţii

  • 1 ≤ N ≤ 5 000 000
  • 1 ≤ x, y ≤ 1 000 000 000
  • 0 ≤ a1 < z ≤ 1 000 000 000
#PunctajRestricţii
14N ≤ 15
211N ≤ 500
313N ≤ 2000
59N ≤ 200 000 şi z = 2
541N ≤ 200 000
622N ≤ 5 000 000

Exemplu

sandwich.insandwich.out
4 3 1 6 5
50

Explicaţie

a = [5, 4, 1, 4]

f(a[1..1]) = 5
f(a[1..2]) = 5
f(a[1..3]) = 6
f(a[1..4]) = 9
f(a[2..2]) = 4
f(a[2..3]) = 4
f(a[2..4]) = 8
f(a[3..3]) = 1
f(a[3..4]) = 4
f(a[4..4]) = 4

S = 50

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?