337
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;
}
Comentarii