Cod sursa(job #661920)

Utilizator vgabi94Vaduva Gabriel vgabi94 Data 15 ianuarie 2012 15:35:16
Problema Xor Max Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
using namespace std;

#define SIZE 100000

struct sub { 
	sub() { start = stop = value = 0; }
	int start, stop, value; 
};

int main()
{
	ifstream in("xormax.in");
	ofstream out("xormax.out");
	sub maxSoFar, maxEndHere; int N, seq[SIZE]; 
	in >> N;
	for(int i = 0; i < N; i++)
		in >> seq[i];
	in.close();
	for(int i = 0; i < N; i++)
	{
		maxEndHere.value = maxEndHere.value ^ seq[i] > maxEndHere.value ? maxEndHere.value ^ seq[i] : 0;
		maxEndHere.stop = i;
		
		if(maxEndHere.value > maxSoFar.value)
		{
			maxSoFar = maxEndHere;
		}
		else
		{
			if(maxEndHere.value != maxSoFar.value)
			{
				maxEndHere.start = i+1;
			}
			//maxEndHere.value = 0;
			/*else
			{
				if((maxEndHere.stop - maxEndHere.start) < (maxSoFar.stop - maxSoFar.start))
					maxSoFar = maxEndHere;
			}*/
		}
	}
	out << maxSoFar.value << ' ' << maxSoFar.start+1 << ' ' << maxSoFar.stop+1;

	//system("PAUSE");
	return 0;
}