Cod sursa(job #1212254)

Utilizator pulseOvidiu Giorgi pulse Data 24 iulie 2014 11:23:43
Problema Arbori indexati binar Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("aib.in");
ofstream fout("aib.out");

int n, q, type;
long long v[100005], a, b, sum;

int main()
{
	fin >> n >> q;
	for (int i = 1; i <= n; ++i)
		fin >> v[i];

	while (q--)
	{
		fin >> type;
		if (type == 0)
		{
			fin >> a >> b;
			v[a] += b;
			continue;
		}
		if (type == 1)
		{
			fin >> a >> b;
			sum = 0;
			for (int i = a; i <= b; ++i)
				sum += v[i];
			fout << sum << '\n';
			continue;
		}
		if (type == 2)
		{
			fin >> a;
			int k;
			sum = 0;
			for (k = 1; sum < a && k <= n; ++k)
				sum += v[k];
			if (sum == a)
				fout << k - 1 << '\n';
			else
				fout << "-1" << '\n';
		}
	}
	fin.close();
	fout.close();
	return 0;
}