Cod sursa(job #1515420)

Utilizator xnonGafita Andrei xnon Data 1 noiembrie 2015 16:35:27
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <cmath>
#define zeros(x) ( (x ^ (x - 1)) & x )
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n, m;
long long v[15002];

int main(){//cout << pow(2,0);
f >> n >> m;
int ind = 1,cod,val,st,dr;
long long s1,s2;
for(int i = 1;i <=n;i++){
f >> val;
ind=i;
while(ind <= n){
    v[ind]+=val;
    ind += zeros(ind);
}
}

while(m--){
    f >> cod;
    if(cod == 0){
f >> ind;
f >> val;
while(ind <= n){
    v[ind]-=val;
    ind += zeros(ind);
}

    }
    else {
f >> st;
f >> dr;
s1 = 0;
s2 = 0;
ind = dr;
while(ind > 0){
    s1+=v[ind];
    ind -= zeros(ind);
                }
ind = st - 1;
while(ind > 0){
    s2+=v[ind];
    ind-=zeros(ind);
                }
                g << s1-s2 << endl;
                    }


                        }
//for(int i = 1;i <= n;i++)g << v[i] << " ";
f.close();
g.close();
return 0;
}