Cod sursa(job #2308534)

Utilizator EdgeLordXDOvidiuPita EdgeLordXD Data 27 decembrie 2018 12:30:25
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<bits/stdc++.h>
#define ll long long
#define N 4001
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int a[N],x,y,s;
void update(int nod, int l, int r){
    a[nod]+=y;
    if(l==r)
        return;
    int m=(l+r)/2;
    if(x<=m)
        update(2*nod, l, m);
    else
        update(2*nod+1, m+1, r);
}
void ans(int nod, int l, int r){
    if(x<=l && y>=r){
        s+=a[nod];
        return;
    }
    int m=(l+r)/2;
    if(x<=m)
        ans(2*nod, l, m);
    if(y>m)
        ans(2*nod+1, m+1, r);
}
int main(){
    int n,m,c,i;
    in>>n>>m;
    for(i=1; i<=n; ++i){
       in>>y;
       x=i;
       update(1,1,n);
    }
    while(m--){
        in>>c>>x>>y;
        if(!c){
            y=-y;
            update(1,1,n);
        }
        else{
            s=0;
            ans(1,1,n);
            out<<s<<"\n";
        }
    }
    return 0;
}