Pagini recente » Istoria paginii runda/22_februarie_simulare_oji_2024_clasele_11_12/clasament | Cod sursa (job #852091) | Cod sursa (job #2561284) | Cod sursa (job #893589) | Cod sursa (job #954849)
Cod sursa(job #954849)
#include <cstdio>
using namespace std;
const long N = 15001;
long n, m, aib [N];
long lsb (long x){
return x & (-x);
}
long query (long x){
long ans = 0;
while (x){
ans += aib [x];
x -= lsb (x);
}
return ans;
}
void update (long x, long value){
for (long i = x; i <= n; i += lsb (i))
aib [i] += value;
}
int main (){
long i, t, a, b, ans;
freopen ("datorii.in", "r", stdin);
freopen ("datorii.out", "w", stdout);
scanf ("%ld%ld", &n, &m);
for (i = 1; i <= n; i ++){
scanf ("%ld", &a);
update (i, a);
}
for (i = 1; i <= m; i ++){
scanf ("%ld", &t);
if (t == 0){
scanf ("%ld%ld", &a, &b);
update (a, -b);
}
else{
scanf ("%ld%ld", &a, &b);
ans = query (b) - query (a - 1);
printf ("%ld\n", ans);
}
}
return 0;
}