Cod sursa(job #1464512)

Utilizator greenday28stoienescu paul greenday28 Data 23 iulie 2015 18:27:16
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
using namespace std;
int N,M,v[16000];
int bit(int x)
{
    return ((x&(x-1))^x);
}
void update(int poz,int val)
{
    for(int i=poz;i<=N;i=i+bit(i))
        v[i]=v[i]+val;
}
void scade(int poz,int val)
{
    for(int i=poz;i<=N;i=i+bit(i))
        v[i]=v[i]-val;
}
int query(int x)
{
    int s=0;
    for(int i=x;i>0;i=i-bit(i))
        s=s+v[i];
    return s;
}
void rezolva_problema()
{
    ifstream in("datorii.in");
    ofstream out("datorii.out");
    int x,a,b,c;
    in>>N>>M;
    for(int i=1;i<=N;i++)
    {
        in>>x;
        update(i,x);
    }
    for(int i=1;i<=M;i++)
    {
        in>>a>>b>>c;
        if(a==0)
            scade(b,c);
        else
            out<<query(c)-query(b-1)<<endl;
    }

}
int main()
    {
        rezolva_problema();
        return 0;
    }