Pagini recente » Cod sursa (job #1933696) | Cod sursa (job #1804380) | Cod sursa (job #2666131) | Cod sursa (job #64275) | Cod sursa (job #1163190)
#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;
}