explorer.pas 566 B

12345678910111213141516171819202122232425262728293031323334
  1. uses tools_p;
  2. Const
  3. zero=1e-4;
  4. phi=(sqrt(5)-1)/2;
  5. Var
  6. L,h,t:extended;
  7. procedure work;
  8. var lastf,lastx,x,f:extended;
  9. begin
  10. lastx:=t*phi;
  11. lastf:=ask(lastx);
  12. while abs(h-t)>zero do
  13. begin
  14. x:=h+t-lastx;
  15. f:=ask(x);
  16. if f>lastf then begin
  17. if x>lastx then h:=lastx else t:=lastx;
  18. lastx:=x; lastf:=f;
  19. end
  20. else begin
  21. if x>lastx then t:=x else h:=x;
  22. end;
  23. end;
  24. end;
  25. Begin
  26. L:=Start;
  27. h:=0; t:=L;
  28. work;
  29. Answer((h+t)/2);
  30. End.