Pagini recente » Cod sursa (job #1662443) | Cod sursa (job #1687764) | Cod sursa (job #200727) | Clasament dupa rating | Cod sursa (job #2883640)
#include<bits/stdc++.h>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int aib[15005];
int n, m;
int lsb(int x)
{
return ( ~x + 1 ) & x;
}
void update(int poz, int val)
{
for ( int i = poz ; i <= n ; i += lsb(i) )
{
aib[i] += val;
}
}
void citire()
{
in>>n>>m;
for ( int i = 1 ; i <= n ; i++ )
{
int aux;
in>>aux;
update(i, aux);
}
}
int prefSum(int poz)
{
int suma = 0;
for ( int i = poz ; i >= 1 ; i -= lsb(i) )
{
suma += aib[i];
}
return suma;
}
void query(int st, int dr)
{
out<<prefSum(dr) - prefSum(st-1)<<'\n';
}
void rez()
{
for ( int i = 1 ; i <= m ; i++ )
{
int a, b, c;
in>>c>>a>>b;
if ( c == 0 )
{
update(a, -1*b);
}
else
{
query(a, b);
}
}
}
int main()
{
citire();
rez();
return 0;
}