Pagini recente » Cod sursa (job #636111) | Cod sursa (job #2894971) | Cod sursa (job #1217026) | Cod sursa (job #3247706) | Cod sursa (job #2462267)
//#pragma GCC optimize ("O3")
//#pragma GCC target ("sse4")
// Solved using Binary Index Tree (arbori indexati binar)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
#define lsb(x) (x&(-x))
static const int NMAX = 15010;
int aib[NMAX*2];
int v[NMAX];
int query(int position)
{
int sum=0;
for(int i = position; i>= 1; i-=lsb(i))
{
sum+=aib[i];
}
return sum;
}
void update(int position, int val, int n)
{
for(int i = position; i<=n; i+=lsb(i))
{
aib[i]+=val;
}
}
int main()
{
int n,m;
fin >> n >> m;
for(int i =1; i <= n; ++i)
{
fin >> v[i];
update(i,v[i],n);
}
for(int i =1 ; i<= m; ++i)
{
int op,a,b;
fin >> op >> a >> b;
if(op)
{
fout << query(b) - query(a-1) << '\n';
}
else
{
update(a,-b,n);
}
}
return 0;
}