program Strategie_vyberu_parkovaciho_mista;
uses crt;


procedure zaparkuj(ignoruj:integer; pocet_mist:integer; var p_strategie:real; var neparkuje:longint);
var i:integer;
    parkoviste:array[1..100] of integer;
    k_strategie:real;
begin
  for i:=1 to pocet_mist do parkoviste[i]:=random(2);
  k_strategie:=p_strategie;
  for i:=ignoruj to pocet_mist do begin
       if (parkoviste[i]=0) then p_strategie:=p_strategie+(pocet_mist-i); {zaparkoval}
  end;
  if k_strategie=p_strategie then begin
       p_strategie:=p_strategie+pocet_mist;
       neparkuje:=neparkuje+1;
  end;
end;



var strategie:real;
    i, pocetmist, vynechej_mist:integer;
    j, nezaparkovalo, pocetpokusu:longint;
    uspesnost:real;
    f:text;

begin
  clrscr;
  randomize;
  nezaparkovalo:=0;

  assign(f, 'soubor.txt');
  rewrite(f);

  write('Zadej pocet pokusu >>> ');
  readln(pocetpokusu);
  write('Zadej pocet parkovacich mist >>> ');
  readln(pocetmist);
  writeln('');

  uspesnost:=pocetmist;

  for i:=1 to pocetmist do begin
       for j:=1 to pocetpokusu do begin
            zaparkuj(i, pocetmist, strategie, nezaparkovalo);
       end;
       writeln ('Pocet parkovacich mist, ktere ridic ignoruje >>> ',i);
       writeln ('Uspesnost zaparkovani je ',(strategie/pocetpokusu):2:3);
       writeln ('Nezaparkovalo ',nezaparkovalo,' ridicu.');
       if ((strategie/pocetpokusu)<uspesnost) then begin
            uspesnost:=(strategie/pocetpokusu); {cim nizsi cislo, tim vyssi pravdepodobnost}
            vynechej_mist:=i;
       end;

       if (i=1) then begin  {zapis do souboru}
            writeln(f,'Pocet parkovacich mist je ',pocetmist);
            writeln(f,'Pocet pokusu je ',pocetpokusu);
       end;
       writeln(f,'');
       writeln(f,'Pocet parkovacich mist, ktere ridic ignoruje >>> ',i);
       writeln(f,'Uspesnost zaparkovani je ',(strategie/pocetpokusu):2:3);
       writeln(f,'Nezaparkovalo ',nezaparkovalo,' ridicu.');
       writeln(f,'');
       nezaparkovalo:=0;
       strategie:=0;
  end;

  writeln(f,'');
  writeln(f,'V tomhle pripade bude nejlepsi ignorovat ',vynechej_mist,' mist.');
  writeln(f,'Uspesnost zaparkovani tak bude ',uspesnost:2:3);
  close(f);

  writeln('');
  writeln('V tomhle pripade bude nejlepsi ignorovat ',vynechej_mist,' mist.');
  writeln('Uspesnost zaparkovani tak bude ',uspesnost:2:3);
  readln;

end.
