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

Diferente intre titluri:

numerex
NumereX

Diferente intre continut:

== include(page="template/taskheader" task_id="numerex") ==
Poveste şi cerinţă...
Se consideră un vector cu $N$ numere, iniţial egale cu $0$, asupra căruia se vor efectua $M$ operaţii astfel:
 
* $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. Cerinţă
 
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
Fişierul de intrare $numerex.in$ ...
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 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
În fişierul de ieşire $numerex.out$ ...
Î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
* $... &le; ... &le; ...$
* $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
table(example). |_. numerex.in |_. numerex.out |
| This is some
  text written on
  multiple lines.
| This is another
  text written on
  multiple lines.
| 4 4
0 1 3 2
1 2 4
0 2 3 3
1 1 3
| 10
21
|
h3. Explicaţie
...
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