Pagini recente » Cod sursa (job #487209) | Cod sursa (job #2884572) | Cod sursa (job #189323) | Istoria paginii runda/ojiji-becali/clasament | Cod sursa (job #1014514)
#include <iostream>
#include <fstream>
using namespace std;
const int Nmax = 15005;
int N, M;
int BIT[Nmax];
inline int lsb( int x )
{
return ( x & ( -x ) );
}
void update( int x, int val )
{
for ( int i = x; i <= N; i += lsb( i ) )
BIT[i] += val;
}
int query( int x )
{
int s = 0;
for ( int i = x; i >= 1; i -= lsb( i ) )
s += BIT[i];
return s;
}
int main()
{
ifstream f("datorii.in");
ofstream g("datorii.out");
f >> N >> M;
int st, dr, val, tip;
for ( int i = 1; i <= N; ++i )
{
f >> val;
update( i, val );
}
for ( int i = 1; i <= M; ++i )
{
f >> tip;
if ( tip == 0 )
{
f >> st >> val;
update( st, -val );
}
else
{
f >> st >> dr;
g << query( dr ) - query( st - 1 ) << "\n";
}
}
return 0;
}