Pagini recente » Cod sursa (job #2142739) | Cod sursa (job #1650922) | Cod sursa (job #2387094) | Cod sursa (job #2537727) | Cod sursa (job #1446723)
#include <stdio.h>
#include <cstring>
#include <bitset>
#include <string>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <list>
#include <set>
#include <stdlib.h>
#include <time.h>
#include <deque>
#define nmax 15010
#define lsb(x) (x&(-x))
using namespace std;
int n,m,i,j,arb[nmax],x,tip,y;
inline void update(int pos,int val)
{
int i;
for (i=pos;i<=n;i+=lsb(i))
arb[i]=arb[i]+val;
}
inline int query(int pos)
{
int i,sol=0;
for (i=pos;i>0;i-=lsb(i))
sol=sol+arb[i];
return sol;
}
int main(){
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++) {
scanf("%d",&x); update(i,x);
}
for (i=1;i<=m;i++){
scanf("%d%d%d",&tip,&x,&y);
if (tip==0) update(x,-y); else
printf("%d\n",query(y)-query(x-1));
}
return 0;
}