Cod sursa(job #1928746)

Utilizator vladmarinescu19Vlad Marinescu Marian vladmarinescu19 Data 16 martie 2017 17:52:29
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>
#define zeros(x) ( (x ^ (x - 1)) & x )
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m;
int aib[15003];
void Add(int x, int quantity)
{
    int i;
    for (i = x; i <= n; i += zeros(i))
        aib[i] += quantity;
}

int Compute(int x)
{
    int i, ret = 0;

    for (i = x; i > 0; i -= zeros(i))
        ret += aib[i];
    return ret;
}
void rezolva()
{
    f>>n>>m;
    int i,x,t,v,c;
    for(i=1;i<=n;i++)
    {
        f>>x;
        Add(i,x);
    }
    for(i=1;i<=m;i++)
    {
        f>>c>>t>>v;
        if(c==0)
            Add(t,-v);
        else
            g<<Compute(v)-Compute(t-1)<<'\n';
    }
}
int main()
{
    rezolva();
    return 0;
}