Cod sursa(job #1996331)

Utilizator vlcmodanModan Valentin vlcmodan Data 1 iulie 2017 02:01:16
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
#include<iostream>
#include<algorithm>


int n, m;

int a[100001];
int b[100001];


int sum(int k)
{
	int s = 0;

	while (k >= 1)
	{
		s += b[k];
		k -= k&-k;
	}
	return s;
}

void add(int poz, int quantity)
{
	while (poz <= n)
	{
		b[poz] += quantity;
		poz += poz&-poz;
	}
}

int main()
{

	freopen("datorii.in", "r", stdin);
	freopen("datorii.out", "w", stdout);

	scanf("%d %d", &n, &m);

	for (int i = 1; i <= n; i++)
	{
		scanf("%d", &a[i]);
		add(i, a[i]);
	}

	for (int i = 1; i <= m; i++)
	{
		int x, y, z;
		scanf("%d %d %d", &x, &y, &z);

		if (x == 0)
		{
			add(y, -z);
		}
		else
		{
			printf("%d\n", sum(z) - sum(y - 1));
		}

	}


	
	return 0;
}