fbpx

Problema #1268 – EasyQuery – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa