Pagini recente » Cod sursa (job #620278) | Cod sursa (job #2245212) | Cod sursa (job #1823465) | Cod sursa (job #1847810) | Cod sursa (job #135333)
Cod sursa(job #135333)
type vec=array[1..1000000] of longint;
var v,sume:vec;
m,i,j,k,i1,j1,k1,nr,s,n:longint;
ok:boolean;
procedure QuickSort(var A: vec; Lo, Hi: Integer);
procedure Sort(l, r: Integer);
var
i, j, x, y: integer;
begin
i := l; j := r; x := a[(l+r) DIV 2];
repeat
while a[i] < x do i := i + 1;
while x < a[j] do j := j - 1;
if i <= j then
begin
y := a[i]; a[i] := a[j]; a[j] := y;
i := i + 1; j := j - 1;
end;
until i > j;
if l < j then Sort(l, j);
if i < r then Sort(i, r);
end;
begin {QuickSort};
Sort(Lo,Hi);
end;
function cautare(x,li,lf:longint):boolean;
begin
while li<lf do
begin
m:=(li+lf) div 2;
if x<sume[m] then lf:=m-1
else li:=m+1;
cautare:=(x=sume[m]);
end;
end;
begin {main}
assign(input,'loto.in');
assign(output,'loto.out');
reset(input);
rewrite(output);
readln(n,s);
for i :=1 to n do
read(v[i]);
nr:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
begin
inc(nr);
sume[nr]:=v[i]+v[j]+v[k];
end;
quicksort(sume,1,nr);
ok:=false;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
if cautare(s-(v[i]+v[j]+v[k]),1,nr) then
for i1:=1 to n do
for j1:=1 to n do
for k1:=1 to n do
if s=v[i]+v[j]+v[k]+v[i1]+v[j1]+v[k1] then
begin
ok:=true;
write(v[i],' ',v[j],' ',v[k],' ',v[i1],' ',v[j1],' ',v[k1]);
exit;
end;
if not(ok) then write('-1');
end.