Pagini recente » Cod sursa (job #2150547) | Cod sursa (job #1478229) | Cod sursa (job #132131) | Cod sursa (job #445784) | Cod sursa (job #1355399)
#include <fstream>
#include <algorithm>
#include <cstdio>
#include <iostream>
#include <utility>
#include <string>
#include <cstring>
#include <cstdlib>
#include <bitset>
#include <set>
#include <utility>
#include <vector>
#include <utility>
#include <tr1/unordered_map>
#define mp make_pair
#define pb push_back
#define oo 0x3f3f3f3f
#define f first
#define s second
#define dim 100009
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int n , m ;
int tree[dim];
int lsb( int x )
{
return x & -x;
}
void add(int i , int val );
int sum( int x );
void Read();
void Solve();
int main()
{
Read();
Solve();
return 0;
}
void Read()
{
in >> n >> m;
for( int i = 1 ; i <=n ; i++)
{
int x ;
in >> x;
add(i,x);
}
}
void Solve()
{
for( int i = 1 ; i<=m ; i++)
{
int tip , x , y;
in >> tip >> x >> y;
if( tip == 0)
add(x,-y);
else
{
int sum1 , sum2;
sum2 = sum(y);
sum1 = sum(x-1);
out << sum2 - sum1 << '\n';
}
}
}
void add(int indice , int val )
{
for( int i = indice ; i<=n ; i+=lsb(i) )
tree[i] +=val;
}
int sum( int indice )
{
int s = 0;
for( int i = indice ; i>=1 ; i-=lsb(i) )
s+=tree[i];
return s;
}