# PBinfo #1268 – easyquery – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Urmează o perioadă aglomerată și trebuie să ajutați un magazin să își gestioneze stocul. Magazinul are N obiecte indexate de la 1 la N, iar fiecare obiect are un stoc. Trebuie să procesați T operații de tipul: 

1) x y p: stocul obiectelor cu ale caror indice se afla intre [x, y] creste cu p
2) x y p: stocul obiectelor cu ale caror indice se afla intre [x, y] scade cu p

In urma unei operatii de tip 2 se poate ca stocul sa fie negativ, caz in care proprietarii raman cu datorie

Date de intrare
Programul citește din fisierul easyquery.in numărul n, pe urmatoarea linie n numere naturale reprezentand stocul magazinului, T, si apoi T intrebari definite ca mai sus.

Date de ieșire
Programul va afisa in fisierul easyquery.out stocul pentru fiecare obiect dupa cele T operatii.

Restricții și precizări

\(1 ≤ N ≤ 10^5\)
\(1 ≤ T ≤ 10^5\)
\(0 ≤ v_i ≤ 10^9\)
\(0 ≤ p ≤ 10^9\)

Exemplu:
easyquery.in

5
1 2 6 3 1
3
1 5 5 2
2 4 5 1
1 1 5 3
easyquery.out

4 5 9 5 5
Explicație
In urma primei operatii stocul va fi (1 2 6 3 3)
In urma celei de a doua operatie stocul va fi (1 2 6 2 2)
In urma celei de a treia operatie stocul va fi (4 5 9 5 5)

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
ifstream in("easyquery.in");
ofstream out("easyquery.out");
long long int n, v[100001], T, op, x, y, P, S = 0, smen[100002];
int main() {
    in >> n;
    for (int i = 1; i <= n; ++i)
        in >> v[i];
    in >> T;
    for (int t = 1; t <= T; ++t) {
        in >> op >> x >> y >> P;
        if (op == 2) P = -P;
        smen[x] = smen[x] + P;
        smen[y + 1] = smen[y + 1] - P;
    } for (int i = 1; i <= n; ++i) {
        S = S + smen[i];
        v[i] = v[i] + S;
        out << v[i] << " ";
    } return 0;
}
// rezolvare cu smen, 100 pct
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1268)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1268/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1268/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
