Cod sursa(job #3041405)

Utilizator alinatomi14Tomita Alina alinatomi14 Data 31 martie 2023 14:02:17
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
#define L long long
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int n,m,x,y,ma,a[500005];
bool k;
void u(int nod, int st, int dr, bool op)
{
    if(st==dr)
    {
        if(op==0)
            a[nod]=y;
        else a[nod]-=y;
        return;
    }
    int m=(st+dr)/2;
    if (x<=m)
        u(2*nod,st,m,op);
    else
        u(2*nod+1,m+1,dr,op);
    a[nod]=a[2*nod]+a[2*nod+1];
}
void q(int nod, int st, int dr)
{
    if (x<=st && dr<=y)
    {
        ma+=a[nod];
        return;
    }
    int m=(st+dr)/2;
    if (x<=m) q(2*nod,st,m);
    if (m<y) q(2*nod+1,m+1,dr);
}
int main()
{
    in>>n>>m;
    for(int i=1; i<=n; ++i)
        in>>y,x=i,u(1,1,n,0);
    for(int i=1; i<=m; ++i)
    {
        in>>k>>x>>y;
        if(k)
            ma=0,q(1,1,n),out<<ma<<'\n';
        else
            u(1,1,n,1);
    }
}