Cod sursa(job #1542376)

Utilizator vLaDy198Bocean Vlad vLaDy198 Data 5 decembrie 2015 12:33:40
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fi("datorii.in");
ofstream fo("datorii.out");
int n,m,v,AIB[100001];
int lsb(int i)
{
    return i-(i&(i-1));///i&(-i)
}
int query(int p)
{
    int s=0,i;
    for(i=p;i>=1;i-=lsb(i))
        s+=AIB[i];
    return s;
}
void update(int p,int x)
{
    int i;
    for(i=p;i<=n;i+=lsb(i))
        AIB[i]-=x;
}
void aib(int p,int x)
{
    int i;
    for(i=p;i<=n;i+=lsb(i))
        AIB[i]+=x;
}
int main()
{int op,a,b;
fi>>n>>m;
for(int i=1;i<=n;i++)
    {fi>>v;
     aib(i,v);
    }
for(int i=1;i<=m;i++)
{
    fi>>op;
    if(op==0)
    {
        fi>>a>>b;
        update(a,b);
    }
    if(op==1)
    {
        fi>>a>>b;
        fo<<query(b)-query(a-1)<<'\n';
    }
}
    return 0;
}