Cod sursa(job #1159531)

Utilizator nickulNic Kul nickul Data 29 martie 2014 18:09:36
Problema Xor Max Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<fstream>
#include<vector>

using namespace std;

ifstream in("xormax.in");
ofstream out("xormax.out");

int main()
{
	unsigned int n,i,j,soli,solj;
	in>>n;
	vector<int> v;
	v.resize(n);
	for(i=0;i<n;i++) in>>v.at(i);
	int sol=v.at(0);
	soli=0;solj=1;
	vector<int> s;
	s.resize(n);
	s.at(n-1)=v.at(0);
	for(i=n-2;i<n;i--) 
	{
		s.at(i)=s.at(i+1)^v.at(n-i-1);
		if(s.at(i)>sol)
		{
			sol=s.at(i);
			soli=n-s.size()+1;
			solj=s.size()-i-1;
		}
	}
	while(s.size())
	{
		for(i=0;i<s.size()-1;i++)
		{
			s.at(i)^=s.at(s.size()-1);
			if(s.at(i)>sol)
			{
				sol=s.at(i);
				soli=n-s.size()+2;
				solj=s.size()-i-2;
			}
			if(s.at(i)==sol)
				if(solj>s.size()-i-2)
				{
					soli=n-s.size()+2;
					solj=s.size()-i-2;
				}
				else
					if(solj==s.size()-i-2&&soli+solj>n-i)
					{
						soli=n-s.size()+2;
						solj=s.size()-i-2;
					}
		}
		s.pop_back();
	}
	out<<sol<<" "<<soli<<" "<<solj+soli;
}