Cod sursa(job #559296)

Utilizator vgabi94Vaduva Gabriel vgabi94 Data 17 martie 2011 19:17:35
Problema Xor Max Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
using namespace std;

fstream f("xormax.in", ios::in);
fstream g("xormax.out", ios::out);

int main()
{
	struct Max {int start; int stop; int value;} maxim;
	int n, sir[100005]; 
	f >> n;
	for(int i=0; i<n; i++)
		f >> sir[i];
	Max * max = new Max[1];
	max[0].start = n-2; max[0].stop = n-1; max[0].value = sir[n-1] ^ sir[n-2]; 
	maxim.value = max[0].value; maxim.start = max[0].start; maxim.stop = max[0].stop;
	for(int i=n-3; i>=0; i--)
	{
		Max * max2 = new Max[n-i];
		max2[0].start = i; max2[0].stop = i + 1; max2[0].value = sir[i] ^ sir[i+1];
		maxim = max2[0].value > maxim.value ? max2[0] : maxim;
		for(int j=0; j<n-i-1; j++)
		{
			max2[j+1].start = i;
			max2[j+1].stop = max[j].stop;
			max2[j+1].value = sir[i] ^ max[j].value;
			maxim = max2[0].value > maxim.value ? max2[0] : maxim;
		}
		//delete[] max;
		Max * max = new Max[n-i];
		max = max2;
		delete[] max2;
	}

	g << maxim.value << " " << maxim.start + 1 << " " << maxim.stop + 1 << endl;
	return 0;
}