Cod sursa(job #642007)

Utilizator ContraPunctContrapunct ContraPunct Data 30 noiembrie 2011 12:33:57
Problema Arbori de intervale Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include<fstream>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
/*Fie un vector A cu N elemente naturale. Asupra lui se vor face M operatii, codificate astfel in fisierul de intrare:
• 0 a b - Sa se determine maximul din intervalul [a,b] (maximul dintre valorile Ai cu a ≤ i ≤ b).
• 1 a b - Valoarea elementului de pe pozita a va deveni b.

Date de intrare
Pe prima linie a fisierului de intrare se afla N si M. Pe urmatoarea linie se gasesc cele N elemente ale vectorului, iar urmatoarele M linii descriu operatia care trebuie efectuata.

Date de iesire
Pentru fiecare operatie de tip 0, se va afisa pe cate o linie maximul pentru intervalul cerut (in ordinea ceruta in fisierul de intrare).*/
int n,m;
const int Nmax = 100006;
int A[Nmax];
void Maxim(int a,int b)
{
	int max = -1,i;
	for( i=a;i<=b;++i)
	{
		if(A[i] > max)
			max = A[i];
	}
	out<<max<<"\n";
}
void ReadData()
{
	int i,tip,a,b;
	in>>n>>m;
	for(i=1;i<=n;++i)
	{
		in>>A[i];
	}
	for(i=1;i<=m;++i)
	{
		in>>tip>>a>>b;
		if(tip ==0 )
			Maxim(a,b);
		else
			A[a]=b;
	}
}
int main()
{
	ReadData();
	return 0;
}