Pagini recente » Cod sursa (job #2652296) | Cod sursa (job #3005610) | Cod sursa (job #558795) | Cod sursa (job #765163) | Cod sursa (job #71810)
Cod sursa(job #71810)
Program Loto;
var N : integer;
lot : array[0..100] of longint;
S,Sum : longint;
answer : array[0..6] of integer;
possible : boolean;
procedure Citeste;
var Intrare : text;
i : integer;
begin
assign(Intrare,'loto.in');
reset(Intrare);
readln(Intrare,N,S);
lot[0]:=0;
for i:=1 to N do read(Intrare,lot[i]);
close(Intrare);
end;
procedure Calc;
var i : integer;
negasit : boolean;
begin
if (S<lot[1]*6) or (S>lot[N]*6) then possible:=false
else
begin
i:=1;
answer[1]:=0;
Sum:=0;
negasit:=true;
while possible and negasit do
begin
if answer[i]=N then
begin
if i=1 then possible:=false
else
begin
Sum:=Sum-lot[answer[i]];
i:=i-1;
end;
end
else
begin
answer[i]:=answer[i]+1;
Sum:=Sum+lot[answer[i]];
if answer[i]>answer[i-1] then Sum:=Sum-lot[answer[i]-1];
if i<6 then
if lot[N]*(6-i)>=S-Sum then
begin
i:=i+1;
answer[i]:=answer[i-1]-1;
end;
end;
negasit:=(S<>Sum) or (i<6);
end;
end;
end;
procedure Calculeaza;
var i,j,imin : integer;
aux : longint;
begin
possible:=true;
answer[0]:=1;
for i:=1 to N-1 do
begin
imin:=i;
for j:=i+1 to N do
if lot[j]<lot[imin] then imin:=j;
aux:=lot[i];
lot[i]:=lot[imin];
lot[imin]:=aux;
end;
Calc;
end;
procedure Scrie;
var Iesire : text;
i : integer;
begin
assign(Iesire,'loto.out');
rewrite(Iesire);
if possible then
for i:=1 to 6 do write(Iesire,lot[answer[i]],' ')
else write(Iesire,-1);
close(Iesire);
end;
begin
Citeste;
Calculeaza;
Scrie;
end.