Pagini recente » Cod sursa (job #2456405) | Cod sursa (job #2277391) | Cod sursa (job #2486935) | Cod sursa (job #2592458) | Cod sursa (job #1418137)
#include <iostream>
#include <cstdio>
#include <fstream>
#define NMax 16000
using namespace std;
int N,M,AIB[NMax];
int bit(int x)
{
return x&(-x);
}
void Update(int poz,int valoare)
{
for(int index=poz;index<=N;index+=bit(index))
AIB[index]+=valoare;
}
void Scade(int poz,int valoare)
{
for(int index=poz;index<=N;index+=bit(index))
AIB[index]-=valoare;
}
int Query(int pozitie)
{
int Suma=0;
for(int index=pozitie;index>0;index-=bit(index))
Suma=Suma+AIB[index];
return Suma;
}
void solve()
{
int a,b,op;
scanf("%d%d", &N, &M);
//ifstream g("datorii.in");
//ofstream f("datorii.out");
// g>>N>>M;
for(int i=1;i<=N;i++)
{
scanf("%d", &a);
//g>>a;
Update(i,a);
}
for(int i=1;i<=M;i++)
{
scanf("%d%d%d", &op, &a, &b);
//g>>op>>a>>b;
if(op==0)
Scade(a,b);
else
printf("%d\n",Query(b)-Query(a-1));
}
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
solve();
}