Cod sursa(job #2575217)

Utilizator stefan1anubystefan popa stefan1anuby Data 6 martie 2020 12:08:48
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>

using namespace std;

ifstream cin("datorii.in");
ofstream cout("datorii.out");

#define zeroes(x) ((x^(x-1))&x)
#define N 15005

int aib[N];
int n,m;

void Update(int p, int q)
{
    int i;
    for(i=p; i<=n; i+=zeroes(i))
        aib[i]+=q;
}
int GetSum(int p)
{
    int sum=0,i;
    for(i=p; i>0; i-=zeroes(i))
        sum+=aib[i];
    return sum;
}
int main()
{
    int i,j,x,y,t;
    cin>>n>>m;
    for(i=1; i<=n; i++)
    {
        cin>>x;
        Update(i,x);
    };
    for(i=1; i<=m; i++)
    {
        cin>>t>>x>>y;
        if(t==0)
            Update(x,-y);
        else
            cout<<GetSum(y)-GetSum(x-1)<<'\n';
    }

    return 0;
}