Pagini recente » Cod sursa (job #2866848) | Cod sursa (job #2968449) | Cod sursa (job #2316995) | Cod sursa (job #2594546) | Cod sursa (job #1284659)
#include <fstream>
#include <iostream>
using namespace std;
fstream f("datorii.in", ios::in), g("datorii.out", ios::out);
void add(int x, int t, int* val,int n)
{
int poz=0;
while (x<=n)
{
val[x] += t;
while((x & (1<<poz)) == 0)
{
poz++;
}
x=x+(1<<poz);
poz++;
}
for(int i=0;i<=n;i++)
{
cout<<val[i]<<" ";
}
cout<<'\n';
}
int ask(int x, int y, int* val)
{
int s1=0, poz=0;
while(y>0)
{
s1 = s1 + val[y];
while((y & (1<<poz)) == 0)
{
poz++;
}
y -= (1<<poz);
poz++;
}
x--;
int s2=0;
poz=0;
while(x>0)
{
s2 += val[x];
while((x & (1<<poz)) == 0)
{
poz++;
}
x -= (1<<poz);
poz++;
}
return (s1 - s2);
}
int main()
{
int n,m;
int val[15001];
f>>n>>m;
for(int i=0;i<=n;i++)
{
val[i]=0;;
}
for(int i=1;i<=n;i++)
{
int x, y, z;
f>>x;
add(i,x,val,n);
}
for(int i=0;i<m;i++)
{
int cod, x,y;
f>>cod>>x>>y;
if(cod)
{
g<<ask(x,y,val)<<'\n';
}
else
{
add(x,-y,val,n);
}
}
}