Pagini recente » Cod sursa (job #1768495) | Cod sursa (job #1128568) | Cod sursa (job #3213446) | Cod sursa (job #2186048) | Cod sursa (job #1688664)
#include<fstream>
#include<iostream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
const int NMAX = 15005;
int AIB[NMAX],N,M;
int zeros(int x)
{
int rez = 0;
for(int i = 0 ; i < 32 ; ++i)
if(x & (1 << i))
break;
else
++rez;
return 1<<rez;
}
void update(int x,int val)
{
for(int i = x ; i <= N ; i += zeros(i))
AIB[i] += val;
}
int query(int poz)
{
int sum = 0;
for(int i = poz ; i > 0 ; i -= zeros(i))
sum += AIB[i];
return sum;
}
int main()
{
in>>N>>M;
int a,cod,b;
for(int i = 1 ; i <= N ; ++i){
in>>a;
update(i,a);
}
for(int i = 1 ; i <= M ; ++i){
in>>cod>>a>>b;
if(cod == 0){
update(a,-b);
}
else out<<query(b) - query(a-1)<<"\n";
}
in.close();
out.close();
return 0;
}