Pagini recente » Partitie | Profil florinrafiliu | Cod sursa (job #1531674) | Cod sursa (job #2052956) | Cod sursa (job #3249849)
#include <bits/stdc++.h>
#define NMAX 100000
#define int long long
using namespace std;
int v[NMAX + 5];
int n;
void update( int i, int val ){
while( i <= n ){
v[i] += val;
i += ( i & -i );
}
}
int prefixSum( int i ){
int sum = 0;
while( i > 0 ){
sum += v[i];
i -= ( i & -i );
}
return sum;
}
int rangeSum( int i, int j ){
return prefixSum( j ) - prefixSum( i - 1 );
}
signed main()
{
ifstream fin( "datorii.in" );
ofstream fout( "datorii.out" );
int m, i, op, a, b, rasp, mij, st, dr;
fin >> n >> m;
for(int i=1;i<=n;i++)
{
fin>>a; update(i,a);
}
for( i = 1; i <= m; i++ ){
fin>>op>>a>>b;
if(op==1)
{
fout<<rangeSum(a,b)<<endl;
}
else
{
update(a,-b);
}
}
return 0;
}