Pagini recente » Cod sursa (job #1494131) | Cod sursa (job #3215303) | Cod sursa (job #2972559) | Cod sursa (job #2650273) | Cod sursa (job #2355776)
#include <iostream>
#include <fstream>
using namespace std;
ofstream fo("datorii.out");
ifstream fi("datorii.in");
int n,m,sir[100005],test,a,b,AIB[100005];
void adaugare(int poz)
{
for(int i=poz;i<=n;i+=i&(-i))AIB[i]+=sir[poz];
}
void modifica(int poz,int dif)
{
for(int i=poz;i<=n;i+=(-i)&i)AIB[i]-=dif;
}
int interogare(int poz)
{
int sol=0;
for(int i=poz;i>0;i-=(-i)&i)sol+=AIB[i];
return sol;
}
int main()
{
fi>>n>>m;
for(int i=1;i<=n;i++)
fi>>sir[i];
for(int i=1;i<=n;i++)
adaugare(i);
for(int i=1;i<=m;i++)
{
fi>>test;
fi>>a>>b;
if(test==0)
modifica(a,b);
else
fo<<interogare(b)-interogare(a-1)<<'\n';
}
fi.close();
fo.close();
return 0;
}