Pagini recente » Cod sursa (job #499918) | Cod sursa (job #1069697) | Cod sursa (job #3136872) | Cod sursa (job #1197161) | Cod sursa (job #1470093)
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int MAXN = 15005;
int N, a[MAXN];
int AIB[MAXN];
int M, x, y;
bool type;
void Minus( int x, int val );
int Sum( int x );
int NZero( int x )
{
return ( x xor (x - 1) ) & x;
}
int main()
{
int i;
fin >> N >> M;
for ( i = 1; i <= N; i++ )
{
fin >> a[i];
Minus( i, -a[i] );
}
for ( i = 1; i <= M; i++ )
{
fin >> type;
if ( type == 0 )
{
fin >> x >> y;
Minus(x, y);
}
else
{
fin >> x >> y;
fout << Sum(y) - Sum(x - 1) << '\n';
}
}
fin.close();
fout.close();
return 0;
}
void Minus( int x, int val )
{
int i;
for ( i = x; i <= N; i += NZero(i) )
AIB[i] -= val;
}
int Sum( int x )
{
int i, rez = 0;
for ( i = x; i > 0; i -= NZero(i) )
rez += AIB[i];
return rez;
}