Cod sursa(job #1330217)

Utilizator forever16Alex M forever16 Data 30 ianuarie 2015 15:11:18
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <iostream>
#include<fstream>
#define maxim 15001
#define zeros(x) ( (x ^ (x - 1)) & x )

using namespace std;
    ifstream f("datorii.in");
    ofstream g("datorii.out");
int n, m, x, y,cod, a[maxim], aib[maxim];
void adauga(int x, int y)
{   for(int i=x; i<=n; i+=zeros(i))
        aib[i]+=y;
}
int suma(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>>x, adauga(i,x);}

for(int i=1; i<=m; i++)
{   f>>cod>>x>>y;
if(cod==1) g<<suma(y)-suma(x-1)<<"\n";
else adauga(x, -y);

}
    return 0;
}