Cod sursa(job #1425414)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 27 aprilie 2015 13:59:31
Problema Datorii Scor 100
Compilator cpp Status done
Runda pregatire-lot-aib Marime 0.73 kb
#include <cstdio>
#include <fstream>
#define nmax 16005
#define ub(x) (x&(-x))
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int v[nmax],a[nmax],n,m;

int sum(int p)
{
    int i,s=0;
    for (i=p;i>=1;i-=ub(i))
        s+=a[i];
    return s;
}

void take(int p,int val)
{
    int i;
    for (i=p;i<=n;i+=ub(i))
        a[i]-=val;
}

int main()
{
    int i,j,x,y,op;
    f>>n>>m;
    for (i=1;i<=n;i++)
        f>>v[i];
    for (i=1;i<=n;i++)
        for (j=i-ub(i)+1;j<=i;j++)
            a[i]+=v[j];
    for (i=1;i<=m;i++) {
        f>>op>>x>>y;
        if (op==0)
                take(x,y);
           else
                g<<sum(y)-sum(x-1)<<'\n';
     }


return 0;
}