Cod sursa(job #1940205)

Utilizator DragosCDragos Corleanca DragosC Data 26 martie 2017 14:51:19
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>
#include <vector>
#define zeros(x) ((x^(x-1))&x)
using namespace std;
int aib[15002];
int n,m;
void decr(int x, int q)
{
    for(int i=x;i<=n;i+=zeros(i))
        aib[i]+=q;
}
int compute(int x)
{
    int val=0;
    for(int i=x;i>0;i-=zeros(i))
        val+=aib[i];
    return val;
}

int main()
{

    ifstream f("datorii.in");
    ofstream g("datorii.out");
    f>>n>>m;
    int x;
    for(int i=1;i<=n;i++)
    {
        f>>x;
        decr(i,x);
    }

    int bin,y;
    for(int i=1;i<=m;i++)
    {
        f>>bin>>x>>y;
        if(bin)
            g<<compute(y)-compute(x-1)<<'\n';
        else
            decr(x,-y);
    }
    return 0;
}