Cod sursa(job #561580)

Utilizator vgabi94Vaduva Gabriel vgabi94 Data 20 martie 2011 20:18:42
Problema Xor Max Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>
#include <queue>
using namespace std;

fstream fin("xormax.in", ios::in);
fstream fout("xormax.out", ios::out);

struct Max 
{
	int start; int stop; int value;
	Max(int Start, int Stop, int Value)
	{start = Start; stop = Stop; value = Value;}
};

int main()
{
	int n, len, i=2; queue<Max> max, nr;
	fin >> n >> n; Max maxim (1, 1, n);
	max.push(maxim); nr.push(maxim);  
	while(!fin.eof())
	{
		fin >> n; len = max.size(); 
		nr.push(Max(i, i, n));  i++;
		for(int i=0; i<len; i++)
		{
			if((nr.back().value ^ max.front().value) < maxim.value)
			{ max.push(Max(max.front().start, nr.back().stop, (nr.back().value ^ max.front().value))); max.pop(); continue; }
			maxim.value = nr.back().value ^ max.front().value;
			maxim.start = max.front().start; maxim.stop = nr.back().stop;
			max.push(maxim);
			max.pop(); 
		}
		if((nr.back().value ^ nr.front().value) < maxim.value)
		{ max.push(Max(nr.front().start, nr.back().stop, (nr.back().value ^ nr.front().value))); nr.pop(); continue; }
		  maxim.value = nr.back().value ^ nr.front().value;
		  maxim.start = nr.front().start; maxim.stop = nr.back().stop;
		  max.push(maxim); 
		  nr.pop();
	}
	fout << maxim.value << " " << maxim.start << " " << maxim.stop;
	return 0;
}