Cod sursa(job #1507089)

Utilizator mantisVraciu Stefan mantis Data 21 octombrie 2015 12:46:37
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,p,x,t,aib[15010];
int zero(int x){return (-x)&x;}
void modif(int p,int v)
{
    while(p<=n) {aib[p]+=v; p+=zero(p);}
}
int query(int p)
{
    int s=0;
    while(p){s+=aib[p]; p-=zero(p);}
    return s;
}
int main()
{
    f>>n>>m;
    for(int i=1;i<=n;i++)
    {
        f>>x;
        modif(i,x);
    }
    for(int i=1;i<=m;i++)
    {
        f>>t>>p>>x;
        if(t==1) g<<query(x)-query(p-1)<<'\n';
        else modif(p,-x);
    }
    g.close();
    return 0;
}