Nu aveti permisiuni pentru a descarca fisierul grader_test2.in
Diferente pentru problema/numerex intre reviziile #10 si #13
Nu exista diferente intre titluri.
Diferente intre continut:
== include(page="template/taskheader" task_id="numerex") ==
Se consideraun 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 l k$: Pentru orice $i$, $x <= i <= x + l - 1$, 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 panala ultimul element. * $QUERY x y$: Se cere sase spunacare 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 sascrieti un program care saefectueze aceste operatiiintr-un mod cat mai eficientsi sascriein 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 operatieincepe cu un cod binar (un numarintreg cu valoarea 0 sau 1)si continuacu 2 sau 3 numereintregi:
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$, $l$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 cerin ordinea aparitiei operatiilorin 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 ≤ N ≤ 100 000$ * $1 ≤ M ≤ 200 000$
* Pentru toate operatiile de tip $UPDATE$ puteti considera $1$ ≤ $k$ ≤ $100 000$ * Pentru toate operatiile de tip $QUERY$ raspunsul va fi mai mic decat 2^64^
* Pentru toate operaţiile de tip $UPDATE$ puteţi considera $1$ ≤ $k$ ≤ $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 243
0 2 3 3
1 1 3 | 10 21
h3. Explicaţie
Dupaprima operatie de $UPDATE$ vectorul va fi $2 4 6 0$, iar suma pe intervalul [$2$, $4$] este egalacu $10$. Dupaa doua operatie de $UPDATE$ vectorul va fi $2 7 12 9$ iar suma pe intervalul [$1$, $3$] este egalacu $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
