Cod sursa(job #638196)

Utilizator andrei1291Balasanu Andrei Nicolae andrei1291 Data 20 noiembrie 2011 19:28:44
Problema Xor Max Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	freopen("xormax.in","rt",stdin);
	freopen("xormax.out","wt",stdout);
	long N,idx_st=1,idx_sp=1,max=0,*x,s=0,i,j;
	scanf("%ld",&N);
	x=(long *)malloc(N*sizeof(long));
	for(i=0; i<N; i++)
		scanf("%ld",&x[i]);
	i=0;
	while(i<=N)
	{
		s=x[i];
		for(j=i+1;j<N&&s>=0;j++)
		{
			s=s^x[j];
			if(s>max)
			{
				max=s;
				idx_st=i+1;
				idx_sp=j+1;
			}
			if(s==max)
			{
				if(j<idx_sp)
				{
					idx_st=i+1;
					idx_sp=j+1;
				}
				if(j==idx_sp)
				{
					if(j-i<idx_st-idx_sp)
					{
						idx_st=i+1;
						idx_sp=j+1;
					}
				}
			}
		}
		i++;
	}
	//fout<<max<<" "<<idx_st<<" "<<idx_sp<<endl;
	printf("%ld %ld %ld",max,idx_st,idx_sp);
	fclose(stdin);
	fclose(stdout);
	//fout.close();
	//fin.close();
	return 0;
}