Pagini recente » Cod sursa (job #964143) | Cod sursa (job #2718101) | Cod sursa (job #1313068) | Cod sursa (job #137099) | Cod sursa (job #1418122)
#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
f<<Query(b)-Query(a-1)<<endl;
}
}
int main()
{
/// freopen("datorii.in", "r", stdin);
/// freopen("datorii.out", "w", stdout);
solve();
}