program v4;

{$APPTYPE CONSOLE}

uses
  SysUtils;

function f(x: real): real;
begin
  f := x * x * x - 6 * x * x + 11 * x - 6;
end;

var
  a, b, x, eps: real;
  fa, fb, fx: real;
  P1, P2: TDateTime;
  H1, M1, S1, Ms1, H2, M2, S2, Ms2: Word;

begin
  Write('Vvedite levuyu granitsu intervala a: '); ReadLn(a);
  Write('Vvedite pravuyu granitsu intervala b: '); ReadLn(b);
  eps := 0.001;

  P1 := Now;
  DecodeTime(P1, H1, M1, S1, Ms1);

  fa := f(a);
  fb := f(b);

  if fa * fb >= 0 then
    WriteLn('Na intervale net kornya ili ih chetnoe kolichestvo.')
  else
  begin
    repeat
      x := a - fa * (b - a) / (fb - fa);
      fx := f(x);

      if fa * fx <= 0 then
      begin
        b := x;
        fb := fx;
      end
      else
      begin
        a := x;
        fa := fx;
      end;
    until (abs(fx) < eps);

    WriteLn('Koren uravneniya: x = ', x:0:6);
    WriteLn('Znachenie funktsii v korne: f(x) = ', fx:0:8);
  end;

  P2 := Now;
  DecodeTime(P2, H2, M2, S2, Ms2);

  Writeln('Vremya nachala: ', H1, ':', M1, ':', S1, ':', Ms1);
  Writeln('Vremya okonchaniya: ', H2, ':', M2, ':', S2, ':', Ms2);
  ReadLn;
end.