Cod sursa(job #2098399)

Utilizator AndreiOffCovaci Andrei-Ion AndreiOff Data 2 ianuarie 2018 19:33:08
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#define zeros(x) ((x^(x-1))&x)
using namespace std;

ifstream f("datorii.in");
ofstream g("datorii.out");

int n, m, AIB[15001], x, k, y;

/*void add(int x, int quantity){

for(int i=x; i<=n; i+=zeros(i))
    AIB[i]+=quantity;

}

int compute(int x){

int s=0;

for(int i=x; i>0; i-=zeros(i))
    s+=AIB[i];

return s;

}*/

int main()
{
    f>>n>>m;
    for(int i=1; i<=n; i++){

        f>>k;
        if(k!=0)
        add(i, k);

        }
    for(int i=0; i<m; i++){

        f>>k>>x>>y;
        if(k){

            int s=0;

for(int i=y; i>0; i-=zeros(i))
    s+=AIB[i];
for(int i=x-1; i>0; i-=zeros(i))
    s-=AIB[i];
g<<s<<"\n";
        }

        else{

            for(int i=x; i<=n; i+=zeros(i))
    AIB[i]-=y;

        }


    }
    return 0;
}