Pagini recente » Cod sursa (job #722909) | Cod sursa (job #199181) | Cod sursa (job #1023820) | Cod sursa (job #1899334) | Cod sursa (job #630238)
Cod sursa(job #630238)
Program loto;
type tip=record
s,x,y:longint;
end;
var a:array [1..100] of longint;
b:array [1..1000000] of tip;
i,j,k:byte;
n,s,t:longint;
fi,fo:text;
procedure sort(l,r:longint);
var i,j,k:longint;
y:tip;
begin
i:=l; j:=r; k:=b[(l+r) div 2].s;
repeat
while k>b[i].s do inc(i);
while k<b[j].s do dec(j);
if i<=j then begin
y:=b[i]; b[i]:=b[j]; b[j]:=y;
inc(i); dec(j);
end;
until i>=j;
if i<r then sort(i,r);
if j>l then sort(l,j);
end;
procedure cauta(l,r:longint);
var mid:longint;
begin
mid:=(l+r) div 2;
if l<r then begin
if b[mid].s>s-b[i].s-b[j].s then cauta(l,mid-1);
if b[mid].s<s-b[i].s-b[j].s then cauta(mid+1,r);
if b[mid].s=s-b[i].s-b[j].s then k:=mid;
end
else k:=mid;
end;
begin
assign(fi,'loto.in');
assign(fo,'loto.out');
reset(fi); rewrite(fo);
readln(fi,n,s);
for i:=1 to n do read(fi,a[i]);
for i:=1 to n do
for j:=i to n do begin
inc(t);
b[t].s:=a[i]+a[j];
b[t].x:=a[i]; b[t].y:=a[j];
end;
sort(1,t);
for i:=1 to t-2 do
for j:=i to t-1 do
if b[i].s+b[j].s<s then begin
cauta(j,t);
if b[i].s+b[j].s+b[k].s=s then begin
write(fo,b[i].x,' ',b[i].y,' ',b[j].x,' ',b[j].y,' ',b[k].x,' ',b[k].y);
close(fo);
exit;
end;
end
else break;
write(fo,'-1');
close(fo);
end.