Cod sursa(job #67837)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 25 iunie 2007 17:52:38
Problema Loto Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.54 kb
var i,j,n : byte;
    sum,z,k,m,pr,sf,x : longint;
    s,ii,jj,kk : array[1..162000] of longint;
    a : array[1..100] of longint;
    gasit : boolean;
    f,g : text;
begin
assign(f,'loto.in'); reset(f);
assign(g,'loto.out'); rewrite(g);
read(f,n,sum);
for i:=1 to n do read(f,a[i]);

for i:=1 to n-2 do begin
        for j:=i+1 to n-1 do begin
                for k:=j+1 to n do begin
                                         inc(z);
                                         ii[z]:=i; jj[z]:=j; kk[z]:=k;
                                         s[z]:=a[i]+a[j]+a[k];
                                   end;
                             end;
                   end;
for i:=1 to n-1 do begin
 for j:=i+1 to n do begin
        inc(z);
        s[z]:=a[i]+ 2*a[j];
        ii[z]:=i;
        jj[z]:=j; kk[z]:=j;
        end;
        end;

for i:=1 to n do begin
        inc(z);
        s[z]:=3*a[i];
        ii[z]:=i;
        jj[z]:=j; kk[z]:=k;
        end;

for k:=1 to z do begin
 x:=sum - s[k];
 pr:=1; sf:=z; m:= z div 2;
 gasit:=false;
        repeat

           if s[m]=x then begin
                   write(g,a[ii[k]],' ',a[jj[k]],' ',a[kk[k]],' ',a[ii[m]],' ',a[jj[m]],' ',a[kk[m]]);
                   writeln(g);
                   close(g);
                   halt;
                          end
                     else if x<s[m] then sf:=m-1
                                    else pr:=m+1;
        m:=(pr+sf) div 2;
        until gasit or (m<pr) or (m>sf);



end;

writeln(g,'-1');
close(g);
end.