Pagini recente » Istoria paginii utilizator/a.pricop | Cod sursa (job #442645) | Atasamentele paginii Clasament 124475824691316 | Cod sursa (job #801948) | Cod sursa (job #308527)
Cod sursa(job #308527)
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:longint;
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:longint;
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.