Pagini recente » Cod sursa (job #2856835) | Cod sursa (job #1080635) | Cod sursa (job #1358688) | Cod sursa (job #2601722) | Cod sursa (job #603138)
Cod sursa(job #603138)
#include <fstream>
using namespace std;
const int N = 15001;
const int M = 100001;
int arb[N], n , m;
void update(int ind, int val){
int poz = 0;
while (ind <= n) {
arb[ind] += val;
while ( ! ( ind & (1<<poz))) poz++;
ind += (1<<poz);
poz++;
}
}
int query(int ind){
int poz = 0, s = 0;
while (ind > 0){
s += arb[ind];
while ( ! ( ind & (1<<poz))) poz++;
ind -= (1<<poz);
poz++;
}
return s;
}
int main(){
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int x = 0, a, b;
fin >> n >> m;
for (int i = 1; i<=n; i++) {
fin >> x;
update(i, x);
}
for ( ; m; m--){
fin >> x;
if (x == 0) {
fin >> a >> b;
update(a, -b);
} else {
fin >> a >> b;
fout << query(b)- query(a-1) << "\n";
}
}
return 0;
}