Pagini recente » Cod sursa (job #199925) | Cod sursa (job #456724) | Cod sursa (job #1279437) | Istoria paginii utilizator/georgianazuzuk | Cod sursa (job #308524)
Cod sursa(job #308524)
var a:array[0..20000000] of longint;
b:array[0..22] of longint;
st,dr,z,i,x,y,n,max,j:longint;
f,g:text;
{}
procedure umple;
var poz:integer;
begin
poz:=1;
for j:=b[0] downto 2 do
begin
poz:=poz shl 1+b[j];
a[poz]:=-1;
end;
poz:=poz shl 1+b[1];
a[poz]:=i;
end;
{}
procedure caut;
var poz,i:integer;
begin
poz:=1;
for i:=b[0] downto 1 do
begin
if a[(poz shl 1)+(b[i] xor 1)]<>0 then
begin
y:=y shl 1+b[i] xor 1;
poz:=(poz shl 1)+(b[i] xor 1);
end
else
begin
y:=y shl 1+b[i];
poz:=poz shl 1+b[i];
end;
end;
z:=a[poz];
end;
{}
begin
assign(f,'xormax.in');
assign(g,'xormax.out');
reset(f);
rewrite(g);
read(f,n);
read(f,x);
y:=x;
b[0]:=22;
i:=1;
for j:=1 to b[0] do
begin
b[j]:=y and 1;
y:=y shr 1;
end;
max:=x;
st:=1;
dr:=1;
umple;
for i:=2 to n do
begin
read(f,y);
x:=x xor y;
y:=x;
for j:=1 to b[0] do
begin
b[j]:=y and 1;
y:=y shr 1;
end;
y:=0;
caut;
if x xor y>max then
begin
max:=x xor y;
st:=z;
dr:=i;
end;
umple;
end;
writeln(g,max,' ',st+1,' ',dr);
close(g);
end.