Pagini recente » Cod sursa (job #1490944) | Cod sursa (job #783739) | Cod sursa (job #1716644) | Cod sursa (job #2109293) | Cod sursa (job #3041074)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <queue>
#include <vector>
#include <stack>
#define MAXN 15003
#define INFI 1000000
///Problma Datori de pe Infoarena
using namespace std;
int aib[MAXN];
int sir[MAXN];
int Zeros(int x){
return ((x^(x-1))&x);
}
void Add(int x,int val,int n){
int i;
for(i=x;i<=n;i+=Zeros(i)){
aib[i]+=val;
}
}
int Answear(int x){
int i,r;
r=0;
for(i=x;i>0;i-=Zeros(i)){
r+=aib[i];
}
return r;
}
int main(){
int n,m,z,i,t,x,y;
FILE *fin,*fout;
fin=fopen("datorii.in","r");
fout=fopen("datorii.out","w");
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++){
fscanf(fin,"%d",&sir[i]);
Add(i,sir[i],n);
}
for(z=0;z<m;z++){
fscanf(fin,"%d%d%d",&t,&x,&y);
if(t==0){
Add(x,-y,n);
}else{
fprintf(fout,"%d\n",Answear(y)-Answear(x-1));
}
}
fclose(fin);
fclose(fout);
return 0;
}