Cod sursa(job #3207521)

Utilizator AlexRadu010Radu Alexandru Timotei AlexRadu010 Data 26 februarie 2024 12:41:59
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>
#define ub(x) (x&(-x))
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,a[15005];
void AIB(int k,int val)
{
    for(int i=k;i<=n;i+=ub(i)) a[i]+=val;
}
unsigned long long add(int pos)
{
    unsigned long long s=0;
    for(int i=pos;i>0;i-=ub(i))
        s+=a[i];
    return s;
}
int main()
{
    f>>n>>m;
    for(int i=1;i<=n;++i)
    {
        int x;
        f>>x;
        AIB(i,x);
    }
    for(int i=1;i<=m;++i)
    {
        int c;
        f>>c;
        if(c==0)
        {
            int x,val,k;
            f>>x>>val;
            k=val*(-1);
            AIB(x,k);
        }
        else
        {
            int x,y;
            f>>y>>x;
            g<<add(x)-add(y-1)<<'\n';
        }
    }
    return 0;
}