Pagini recente » Cod sursa (job #1371085) | Cod sursa (job #267046) | Cod sursa (job #3199740) | Cod sursa (job #494998) | Cod sursa (job #2014286)
#include <fstream>
#define zeros(x) ( (x ^ (x - 1)) & x )
using namespace std;
const int NMAX = 15002;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m;
int sum[NMAX],arbor[NMAX];
void Add(int pos,int val)
{
for(int i = pos ; i <= n; i += zeros(i))
arbor[i] += val;
}
void Substract(int pos,int val)
{
for(int i = pos ; i <= n; i += zeros(i))
arbor[i] -= val;
}
int FindSum(int pos)
{
int sum = 0;
for(int i = pos; i > 0; i-=zeros(i))
sum+= arbor[i];
return sum;
}
int main()
{
f>>n>>m;
for(int i = 1; i <=n; i++)
{
int x;
f>>x;
Add(i,x);
}
bool op;
for(int i = 1; i <= m; i++)
{
f>>op;
if(op == 0)
{
int t,v;
f>>t>>v;
Substract(t,v);
}
else
{
int st,dr;
f>>st>>dr;
g<<FindSum(dr) - FindSum(st-1)<<"\n";
}
}
f.close();
g.close();
return 0;
}