Cod sursa(job #2727457)

Utilizator UnknownPercentageBuca Mihnea-Vicentiu UnknownPercentage Data 21 martie 2021 21:51:37
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
	
#include <bits/stdc++.h>
 
#define scanf (void)!scanf
 
using namespace std;
 
void Files(){
    (void)!freopen("datorii.in", "r", stdin);
    (void)!freopen("datorii.out", "w", stdout);
}
 
int bit[100002];
int N, M, val;
 
int sum(int idx){
	int ret = 0;
	for(;idx > 0;idx -= idx & -idx)
		ret += bit[idx];
	return ret;
}
 
int Query(int l, int r){
	return sum(r) - sum(l - 1);
}
 
void add(int idx, int delta){
	for(;idx <= N;idx += idx & -idx)
		bit[idx] += delta;
}
 
int SearchIdx(int target){
	int l = 1, r = N, ans = -1;
	while(l <= r){
		int m = (l + r) >> 1;
		int val = sum(m);
		if(val == target)
			ans = m;
		if(val < target) l = m +  1;
		else r = m - 1;
	}
 
	return ans;
}
 
int main(){
	Files();
 
	scanf("%d%d", &N, &M);
 
	for(int i = 1;i <= N;i++){
		scanf("%d", &val);
		add(i, val);
	}
 
	while(M--){
		int t, x, y;
		scanf("%d%d%d", &t, &x, &y);
		if(t == 0)
			add(x, -y);
		if(t == 1)
			printf("%d\n", Query(x, y));
	}
 
}