Pagini recente » Cod sursa (job #3172762) | Cod sursa (job #2946142) | Cod sursa (job #1393557) | Cod sursa (job #1643027) | Cod sursa (job #2529606)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin;
ofstream fout;
vector <int> BIT(15001 , 0);
int i, j, n, m;
inline int least_significant_bit(int a){
return ((a ^ (a-1)) & a );
}
inline void update(int pos, int val){
for (int ind=pos; ind<=n; ind += least_significant_bit(ind))
BIT[ind] += val;
}
inline int get_sum(int pos){
int sum = 0;
for (int ind=pos; ind>=1 ; ind -= least_significant_bit(ind))
sum += BIT[ind];
return sum;
}
int main (void){
int aux, aux2, type;
fin.open("datorii.in");
fin>>n>>m;
for (i=1; i<=n; i++){
fin>>aux;
update(i , aux);
}
fout.open("datorii.out");
for (i=1; i<=m; i++){
fin>>type;
switch (type){
case 0:
fin>>aux>>aux2;
update(aux , -aux2);
break;
case 1:
fin>>aux>>aux2;
fout<<(get_sum(aux2) - get_sum(aux-1))<<"\n";
break;
}
}
fin.close();
fout.close();
return 0;
}