Cod sursa(job #308523)

Utilizator valytgjiu91stancu vlad valytgjiu91 Data 27 aprilie 2009 16:49:03
Problema Xor Max Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.24 kb
var a,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.