Pagini recente » Cod sursa (job #163251) | Cod sursa (job #260924) | Cod sursa (job #644333) | Cod sursa (job #2095970) | Cod sursa (job #921226)
Cod sursa(job #921226)
#include <cstdio>
#define ciudatenia(a) (a&(a-1))^a
using namespace std;
int n,m;
int arb[15001];
void modifica(int a,int val) {
while (a<=n){
arb[a] += val;
a += ciudatenia(a);
}
}
int datorie(int a,int b) {
int s = 0;
while (b>0) {
s += arb[b];
b -= ciudatenia(b);
}
while (a>0) {
s -= arb[a];
a -= ciudatenia(a);
}
return s;
}
int main() {
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d",&n,&m);
for (int i=1;i<=n;i++) {
int a;
scanf("%d",&a);
modifica(i,a);
}
for (int i=1;i<=m;i++) {
int a,b,tip;
scanf("%d %d %d",&tip,&a,&b);
if (tip == 0) modifica(a,-b);
else if (tip == 1) printf("%d\n",datorie(a-1,b));
}
return 0;
}