Cod sursa(job #322682)

Utilizator GulyanAlexandru Gulyan Data 9 iunie 2009 17:07:50
Problema Xor Max Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>
#include <stdlib.h>

int main()
{
	freopen("xormax.in", "r", stdin);
	freopen("xormax.out", "w", stdout);

	unsigned long n, i, *v, *v2, max = 0, maxp, maxi, pas = 0;

	scanf("%ld", &n);
	v = (unsigned long *) malloc( n * sizeof(*v) );
	v2 = (unsigned long *) malloc( n * sizeof(*v2) );
	for( i = 0; i < n; ++i ){
		scanf("%ld", v + i);
		v2[i] = v[i];
		if( v2[i] > max)
			max = v2[i], maxp = pas, maxi = i;
	}

	for( pas = 1; pas < n; ++pas ){
		for( i = 0; i < n - pas; ++i){
			v2[i] ^= v[i + pas];
			if( v2[i] > max)
				max = v2[i], maxp = pas, maxi = i;
		}
	}

	printf("%ld %ld %ld", max, v[maxi], v[maxi + maxp]);

	free( v );
	free( v2 );
	return 0;
}