Cod sursa(job #2494350)

Utilizator comanicidanielDaniel Comanici comanicidaniel Data 17 noiembrie 2019 18:44:09
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
using namespace std;

ifstream cin("datorii.in");
ofstream cout("datorii.out");

int v[32768], i, n, m, s, d, x, poz, k, sum;

void update(int nod, int st, int dr)
{	if (st==dr) v[nod]+=x;
	else
	{	int m=(st+dr)/2;
		if (poz<=m) update(2*nod, st, m);
		else update(2*nod+1, m+1, dr);
		v[nod]=v[2*nod]+v[2*nod+1];
	}
}

void querry(int nod, int st, int dr)
{	if (s<=st && dr<=d) sum+=v[nod];
	else
	{	int m=(st+dr)/2;
		if (s<=m) querry(2*nod, st, m);
		if (d>m) querry(2*nod+1, m+1, dr);
	}
}

int main()
{	cin>>n>>m;
	for (i=1; i<=n; ++i)
	{	cin>>x;
		poz=i;
		update(1, 1, n);
	}
	for (i=1; i<=m; ++i)
	{	cin>>k;
			cin>>s>>d;
			sum=0;
			querry(1, 1, n);
			cout<<sum<<'\n';

	}
    return 0;
}