Cod sursa(job #322680)

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

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

	int n, i;
	unsigned long *v, *v2;//vectorul original si vectorul auxilira
	unsigned long max, maxp, maxi, pas = 0;

	scanf("%d", &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;
}