Pagini recente » Cod sursa (job #1257486) | Cod sursa (job #37580) | Cod sursa (job #1339503) | Cod sursa (job #2681710) | Cod sursa (job #3133349)
#include<iostream>
#include<fstream>
using namespace std;
int n,m,a[15001],x,y,ok;
int pd[14]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192};
int z[15001];
void pun(int i,int x)
{do
{
a[i]=a[i]+x;
i=i+pd[z[i]];
}while(i<=n);
}
int sum(int x)
{
int s=0;
do{
s=s+a[x];
x=x-pd[z[x]];
}while(x>0);
return s;
}
int main()
{
std::ifstream f("datorii.in");
std::ofstream g("datorii.out");
f>>n>>m;
for(int i=2;i<=n;i=i+2)
{
for(y=0;(pd[y]&i)==0;y++);
z[i]=y;
}
for(x=1;x<=n;x++)
{
f>>y;
pun(x,y);
}
for(;m;m--)
{
f>>ok>>x>>y;
if(ok) g<<sum(y)-sum(x-1)<<endl;
else pun(x,-y);
}
return 0;
}