Cod sursa(job #37540)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 25 martie 2007 10:48:09
Problema Dezastru Scor 10
Compilator fpc Status done
Runda preONI 2007, Runda 4, Clasa a 9-a si gimnaziu Marime 2.12 kb
type vector=array[1..25]of real;
function valid(var k:integer;st:vector):integer;
var ok,i:integer;
begin
        ok:=1;
        for i:=1 to k-1 do
                if st[k]=st[i] then
                begin
                        ok:=0;
                        break;
                end;
        valid:=ok;
end;
procedure back(a:vector;var suma:real;n,r:longint;var w:longint);
var k:integer;
    st:vector;
    i:integer;
    p:real;
begin
        k:=1;
        st[1]:=0;
        while k>0 do
        begin
                if st[k]<n then
                begin
                        st[k]:=st[k]+1;
                        if valid(k,st)=1 then
                                if k=n then
                                begin
                                        p:=1;
                                     for i:=1 to r do
                                        p:=p*a[round(st[i])];
                                     suma:=suma+p;
                                     inc(w);
                                end
                                else
                                begin
                                        inc(k);
                                        st[k]:=0;
                                end;
                end
                else
                    dec(k);
        end;
end;


var f:Text;
        a:vector;
        i,n,r,w:longint;
        suma,p,o:real;

begin
        assign(f,'dezastru.in');
        reset(f);
                readln(f,n,r);
                for i:=1 to n do
                read(f,a[i]);
        close(f);
        suma:=0;
        w:=0;
        back(a,suma,n,r,w);
        suma:=suma/w;
        assign(f,'dezastru.out');
        rewrite(f);
                writeln(f,suma:0:6);
                writeln(f,suma:0:7);
        close(f);
        assign(f,'dezastru.out');
        reset(f);
                read(f,p);
                read(f,o);
        closE(f);
        if p>=o then
                suma:=suma-0.000001;
        assign(f,'dezastru.out');
        rewrite(f);
                write(f,suma:0:6);
        close(f);
end.