Pagini recente » Cod sursa (job #630380) | Cod sursa (job #1109228) | Cod sursa (job #1047913) | Cod sursa (job #693562) | Cod sursa (job #2507834)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("datorii.in");
ofstream g ("datorii.out");
int n, q;
int vek[15005];
int logs[100007];
int aib[200005];
void update(int x, int val)
{
int i=x;
int p=1;
while(p<=n)
{
if(i%2==0) i++;
if((i&(i-1))*p<x && i*p>=x)
aib[i*p]+=val;
i/=2;
p*=2;
}
}
void subs(int x, int val)
{
int i=x;
int p=1;
while(p<=n)
{
if(i%2==0) i++;
if((i&(i-1))*p<x && i*p>=x)
aib[i*p]+=val;
i/=2;
p*=2;
}
}
int query(int poz)
{
int s=0,p=poz;
while(p)
{
s+=aib[p];
p=p&(p-1);
}
return s;
}
int main()
{
f>>n>>q;
for(int i=1;i<=100001;++i)
{
logs[i]=logs[i/2]+1;
}
// cout<<"j";
for(int i=1;i<=n;++i)
{
f>>vek[i];
update(i, vek[i]);
// cout<<"j";
}
for(int i=1;i<=q;++i)
{
// cout<<"k";
int t;
f>>t;
if(t==0)
{
int z, v;
f>>z>>v;
subs(v,z);
}
else {
int p,q;
f>>p>>q;
int s=0;
// cout<<query(q)<<" "<<query(p-1);
s=query(q)-query(p-1);
g<<s<<"\n";
}
}
return 0;
}