Cod sursa(job #1408350)

Utilizator GrandmasterSoucup Bogdan Grandmaster Data 29 martie 2015 23:44:37
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <set>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <utility>
#include <string>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <limits>
#include <sstream>
#include <deque>
#include <bitset>
#include <complex>
#include <functional>
#include <memory>
#include <numeric>
#define x first
#define y second
typedef std::pair<int, int> pii;

using namespace std;
struct mega{
	int a, b;
};
ifstream fin("arbint.in");
ofstream fout("arbint.out");
mega v[100001];
int x[100001];
int divide(int st, int dr, int x[])
{
	if(st < dr)
	{
		int m = (st + dr) / 2;
		int ga = divide(st, m, x);
		int gb = divide(m + 1, dr, x);
		if(ga > gb)
			return ga;
		else
			return gb;
	}
	else
		return x[st];

}
int main () {
	int n, m;
	fin >> n >> m;
	for(int i = 0; i < n; i++)
		fin >> x[i];
	for(int i = 0; i < m; i++)
	{
		int ok;
		fin >> ok >> v[i].a >> v[i].b;
		if(ok == 0)
		{
			int vv = divide((v[i].a - 1), (v[i].b - 1), x);
			fout << vv << "\n";
		}
		else
			x[v[i].a - 1] = x[v[i].b - 1]; 
	}
	return 0;
}