Pagini recente » Cod sursa (job #2525747) | Cod sursa (job #2716472) | Cod sursa (job #1251195) | Cod sursa (job #686677) | Cod sursa (job #1284660)
#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+=(1<<poz);
poz++;
}
}
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;
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);
}
}
}