Pagini recente » Istoria paginii runda/simulare_tractoare | Cod sursa (job #210048) | Cod sursa (job #453756) | Cod sursa (job #2424056) | Cod sursa (job #2024101)
#include <iostream>
#include <fstream>
#define lsb(x) (x&(-x))
#define DM 15005
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n, m, aib[DM], a, b;
int suma( int d )
{
int result = 0;
for( int i = d; i > 0; i -= lsb(i))
{
result += aib[i];
}
return result;
}
void updt( int sant, int value )
{
for( int i = sant; i <= n; i += lsb(i))
{
aib[i] += value;
}
}
int main()
{
int aux, tip;
fin >> n >> m;
for( int i = 1 ; i <= n; i++)
fin >> aux, updt( i, aux );
for( int i = 1; i <= m; i++)
{
fin >> tip >> a >> b;
if( tip == 0 )
{
updt(a,-b);
}
else
fout << suma( b ) - suma( a - 1 ) << "\n";
}
return 0;
}