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
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)
#include <bits/stdc++.h> using namespace std; ifstream fin("easyquery.in"); ofstream fout("easyquery.out"); int main() { long long A[100002], B[100002], n,S=0,q,op,st,dr,v; B[0]=0; fin>>n; for (int i=1;i<=n;++i) { fin>>A[i]; B[i]=A[i] -S; S += B[i]; } fin >>q; for (int i=1;i<=q;++i) { fin>>op; fin>>st>>dr>>v; if(op==2) v=(-1)*v; B[st]=B[st] +v; if (dr<= n) B[dr+1]=B[dr+1]-v; } for(int i=1;i<=n;++i) { B[i]=B[i-1] + B[i]; fout <<B[i]<<" "; } fin.close(); fout.close(); return 0; }