Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2011-03-26 14:11:09.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:numerex.in, numerex.outSursăAlgoritmiada 2011, Runda 3
AutorAndrei Parvu, Bogdan-Cristian Tataroiu, Tiberiu SavinAdăugată dedevilkindSavin Tiberiu devilkind
Timp execuţie pe test0.75 secLimită de memorie36864 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

NumereX

Se considera un vector cu N numere, inital egale cu 0, asupra caruia se vor efectua M operatii astfel:

  • UPDATE x y k: Pentru orice i, x <= i <= y, valoarea elementului i din vector creste cu k * (i - x + 1). Practic primul element din interval creste cu valoarea k, al doilea cu 2 * k si asa mai departe pana la ultimul element.
  • QUERY x y: Se cere sa se spuna care este suma elementelor pe intervalul [x, y].

Cerinta

Dandu-se N si M si cele M operatii, trebuie sa scrieti un program care sa efectueze aceste operatii intr-un mod cat mai eficient si sa scrie in fisierul de iesire raspunsurile pentru operatiile de tip QUERY.

Date de intrare

Fisierul de intrare numerex.in va contine pe prima linie numerele N si M. Pe urmatoarele M linii vor fi descrise operatiile. Fiecare linie care descrie o operatie incepe cu un cod binar (un numar intreg cu valoarea 0 sau 1) si continua cu 2 sau 3 numere intregi:

  • Un cod 0 va semnifica o operatie de UPDATE si va fi urmat de 3 numere x, y si k (cu semnificatia din enunt)
  • Un cod 1 va semnifica o operatie de QUERY si va fi urmat de 2 numere x si y (cu semnificatia din enunt)

Date de ieşire

In fisierul de iesire numerex.out se vor scrie pe cate o linie sumele cerute de fiecare operatie de tip QUERY (sumele se cer in ordinea aparitiei operatiilor in fisierul de intrare).

Restricţii

  • 1 ≤ N ≤ 100 000
  • 1 ≤ M ≤ 200 000

Exemplu

numerex.innumerex.out
4 4
0 1 3 2
1 2 4
0 2 4 3
1 1 3
10
21

Explicaţie

Dupa prima operatie de UPDATE vectorul va fi 2 4 6 0, iar suma pe intervalul [2, 4] este egala cu 10.
Dupa a doua operatie de UPDATE vectorul va fi 2 7 12 9 iar suma pe intervalul [1, 3] este egala cu 21.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?