Cod sursa(job #857653)

Utilizator milijrCristian Militaru milijr Data 18 ianuarie 2013 09:14:31
Problema Arbori indexati binar Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <vector>
using namespace std;

#define MAXN 100005
//int vec[MAXN];
int part[MAXN];
//vector<pair<int, int> > op0;
int main()
{
	ifstream in("aib.in");
	ofstream out("aib.out");
	
	int n,m,i,op,a,b,j;
	
	in >> n >> m;
	part[0] = 0;
	for(i = 1; i <= n; i++)
	{
		in >> part[i];
		part[i] += part[i - 1]; 
	}
	
	for(i = 1; i <= m; i++)
	{
		in >> op;
		if(op == 0)
		{
			in >> a >> b;
			//op0.push_back(make_pair(a,b));
			for(j = a; j <= n; j++)
				part[j] += b;
		}
		if(op == 1)
		{
			in >> a >> b;
			out << part[b] - part[a - 1] << '\n';
		}
		if(op == 2)
		{
			in >> a;
			for(j = 1; j <= n && part[j] < a; j++);
			if(part[j] == a)
				out << j;
			else
				out << -1;
			out << '\n';
		}
	}
}