Cod sursa(job #1509398)

Utilizator arvlgeArdeleanu Vlad George arvlge Data 23 octombrie 2015 20:03:22
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#define ll long long
#define zeros(x) ((x ^ (x-1)) & x)
#include<fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
ll n,m,val,s1,s2,g,h,cod;
ll a[15000];

int main(){
    in>>n>>m;

    for(int i=1;i<=n;++i){
        in>>val;
        for(int j=i;j<=n;j+=zeros(j))
            a[j]+=val;
    }

    while(m--){
        in>>cod;
        if(cod){
            in>>g>>h;
            --g;
            ll s1 = 0;
            for(;g>0;g-=zeros(g))
                s1+=a[g];
            ll s2 = 0;
            for(;h>0;h-=zeros(h))
                s2+=a[h];
            out<<s2-s1<<'\n';
        }
        else{
            in>>g>>h;
            for(;g<=n;g+=zeros(g))
                a[g]-=h;
        }

    }
    in.close();
    out.close();

    return 0;
}