Diferente pentru problema/numerex intre reviziile #7 si #13

Nu exista diferente intre titluri.

Diferente intre continut:

== include(page="template/taskheader" task_id="numerex") ==
Se considera un vector cu $N$ numere, inital egale cu $0$, asupra caruia se vor efectua $M$ operatii astfel:
Se consideră un vector cu $N$ numere, iniţial egale cu $0$, asupra căruia se vor efectua $M$ operaţii 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$].
* $UPDATE x l k$: Pentru orice $i$, $x <= i <= x + l - 1$, valoarea elementului $i$ din vector creşte cu $k * (i - x + 1)$. Practic primul element din interval creşte cu valoarea $k$, al doilea cu $2 * k$ şi aşa mai departe până la ultimul element.
* $QUERY x y$: Se cere să se spună care este suma elementelor de pe intervalul [$x$, $y$].
h2. Cerinta
h2. Cerinţă
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$.
Dându-se $N$, $M$ şi cele $M$ operaţii, trebuie să scrieţi un program care să efectueze aceste operaţii într-un mod cât mai eficient şi să scrie în fişierul de ieşire răspunsurile pentru operaţiile de tip $QUERY$.
h2. 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:
Fişierul de intrare $numerex.in$ va conţine pe prima linie numerele $N$ şi $M$. Pe următoarele $M$ linii vor fi descrise operaţiile. Fiecare linie care descrie o operaţie începe cu un cod binar (un număr întreg cu valoarea 0 sau 1) şi continuă cu 2 sau 3 numere întregi:
* 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)
* Un cod $0$ va semnifica o operaţie de $UPDATE$ şi va fi urmat de $3$ numere $x$, $l$ şi $k$ (cu semnificaţia din enunţ)
* Un cod $1$ va semnifica o operaţie de $QUERY$ şi va fi urmat de $2$ numere $x$ şi $y$ (cu semnificaţia din enunţ)
h2. 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).
În fişierul de ieşire $numerex.out$ se vor scrie pe câte o linie sumele cerute de fiecare operaţie de tip $QUERY$ (sumele se cer în ordinea apariţiei operaţiilor în fişierul de intrare).
h2. Restricţii
* $1 &le; N &le; 100 000$
* $1 &le; M &le; 200 000$
* Pentru toate operaţiile de tip $UPDATE$ puteţi considera $1$ &le; $k$ &le; $100 000$
* Pentru toate operaţiile de tip $QUERY$ răspunsul va fi mai mic decât 2^64^
h2. Exemplu
| 4 4
0 1 3 2
1 2 4
0 2 4 3
0 2 3 3
1 1 3
| 10
21
h3. 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$.
După prima operaţie de $UPDATE$ vectorul va fi $2 4 6 0$, iar suma pe intervalul [$2$, $4$] este egală cu $10$.
După a doua operaţie de $UPDATE$ vectorul va fi $2 7 12 9$ iar suma pe intervalul [$1$, $3$] este egală cu $21$.
== include(page="template/taskfooter" task_id="numerex") ==

Nu exista diferente intre securitate.

Diferente intre topic forum:

 
5447