Cod sursa(job #2286812)

Utilizator toadehuPuscasu Razvan Stefan toadehu Data 20 noiembrie 2018 20:17:06
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;

int n,aib[15100];

void update(int i, int x)
{
    int j;
    for(j=i; j<=n; j+=((j^(j-1))&j))
    {
        aib[j]+=x;
    }
}

int query (int i)
{
    int j,s=0;
    for(j=i; j>=1; j-=((j^(j-1))&j))
    {
        s+=aib[j];
    }
    return s;
}

int m,i,x,ok,y;

int main()
{
    ifstream fin ("datorii.in");
    ofstream fout ("datorii.out");
    fin>>n>>m;
    for(i=1; i<=n; i++)
    {
        fin>>x;
        update(i,x);
    }
    for(i=1; i<=m; i++)
    {
        fin>>ok>>x>>y;
        if(ok==1)
        {
            fout<<query(y)-query(x-1)<<'\n';
        }
        else
        {
            update(x,-y);
        }
    }
    return 0;
}