Cod sursa(job #676290)

Utilizator balakraz94abcd efgh balakraz94 Data 8 februarie 2012 22:25:20
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#define infile "datorii.in"
#define outfile "datorii.out"
#define n_max 15005
#define zeros(x) ((x&(x-1))^x)
using namespace std;

int N, M;

int AIB[n_max];


inline int query(int poz)
{
	int rez = 0;
	for(int i = poz; i; i -= zeros(i))
		rez += AIB[i];
	
	return rez;
}


inline void add(int poz, int val)
{
	for(int i = poz; i <= N; i += zeros(i))
		AIB[i] += val;
}



int main(void)
{
    freopen(infile, "r", stdin);
	freopen(outfile, "w", stdout);
    
    scanf("%d %d", &N, &M);
    
	int op, x, y;
	
	for(int i=1;i<=N;++i)
	{
		scanf("%d",&x);
		
		add(i,x);
	}
	
	while(M--)
	{
		scanf("%d %d %d",&op, &x, &y);
		
		switch(op)
		{
		case 0: add(x,-y);                              break;
	    case 1: printf("%d\n", query(y) - query(x-1));  break;
		}
	}
	
    fclose(stdin);
    fclose(stdout);   
	
    return 0;
}