Зверски, конечно, но максимум, что я придумал - снизить необходимый объём памяти... Впрочем, не актуально, ибо 256МеБ позволяют. В общем, вот:)
var
a: array [1..1000000] of integer;
b: array [1..3] of integer;
i, j, t, n: integer;
begin
assign(output, 'task1.out'); rewrite(output);
assign(input, 'task1.in'); reset(input); readln(n);
for i := 1 to n do
begin
read(a[i]);
write(' ');
end;
close(input);
for i := 1 to n do
for j := 1 to n do
for t := 1 to n do
if not ((i in [j, t]) or (j in [i, t]) or (t in [i, j])) then
if (b[1] * b[2] * b[3] < a[i] * a[j] * a[t]) then
begin
b[1] := a[i];
b[2] := a[j];
b[3] := a[t];
end;
writeln(b[1], ' ', b[2], ' ', b[3]);
end.