Cod sursa(job #1163190)

Utilizator bogobatBerbece Daniel bogobat Data 1 aprilie 2014 11:14:55
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,a[15002],ind,val,poz,x,y,t,v,st,dr,sum;
bool bin;
void op1(){f>>st>>dr;

int s1=0;poz=0;
while(dr>0){
    s1+=a[dr];
    while(dr && pow(2,poz)==0) poz++;
    dr-=pow(2,poz);
    poz++;
}
st--;
int s2=0;poz=0;
while(st>0){
    s2+=a[st];
    while(st && pow(2,poz)==0) poz++;
    st-=pow(2,poz);
    poz++;
}
g<<s1-s2-3<<endl;

}

void op2(){
f>>ind>>val;
poz=0;
while(ind<=n){

    a[ind]-=val;
    while(ind && pow(2,poz)==0) poz++;
    ind+=pow(2,poz);
    poz++;

}
}
int main()
{
    f>>n>>m;
    for(int i=1;i<=n;i++){ f>>val;ind=i;poz=0;
while(ind<=n){

    a[ind]+=val;
    while(ind && pow(2,poz)==0) poz++;
    ind+=pow(2,poz);
    poz++;

}}
    for(int i=1;i<=m;i++){
            f>>bin;
        if(bin) op1();
        else op2();

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