program fizik;
uses graph,crt;
const a=9.8;
var v,v0,ttek,tobsh,t0,hnach,h0,hmax,htek,vtek,k_upr,rastyag,rastyagx:real;
napravl:shortint;
i,grDriver, grMode : integer;
s:string;
f:text;

procedure vvod;
begin
writeln('telo dvigetsya... 1-vverh,-1-vniz');
readln(napravl);
writeln('nachalnaya skorost, m/s');
readln(v0);
v:=v0;
writeln('uprugost');
readln(k_upr);
while (k_upr>1) or (k_upr<0) do
  begin
  writeln('koeff dolgen byt ot 0 do 1!');
  readln(k_upr);
  end;
writeln('nachalnaya vysota,m');
readln(h0);
hnach:=h0;
hmax:=h0;
writeln('vas interesuet sostoyanie cherez ... sekund');
readln(t0);
end;

procedure raschet (vyvod:boolean);
begin
tobsh:=0;
if napravl=1 then
  begin
  ttek:=v/a;
  if (tobsh+ttek>=t0) and (t0>tobsh) then
    begin
    htek:=hnach+v*(t0-tobsh)-(a*sqr(t0-tobsh))/2;
    vtek:=v-a*(t0-tobsh);
    end;
  hnach:=hnach+v*ttek-(a*sqr(ttek))/2;
  if hmax<hnach then
    hmax:=hnach;
  {napravl:=-1;}
  v:=0;
  tobsh:=ttek;
  end
else
  begin
  {v moment udara}
  ttek:=sqrt(2*hnach/a);
  if (tobsh+ttek>=t0) and (t0>tobsh) then
    begin
    htek:=hnach-v*(t0-tobsh)-(a*sqr(t0-tobsh))/2;
    vtek:=v+a*(t0-tobsh);
    end;
  tobsh:=tobsh+ttek;
  v:=v+a*ttek;
  hnach:=0;
  {udar}
  v:=sqrt(k_upr)*v;
  {polet vverh}
  ttek:=v/a;
  if (tobsh+ttek>=t0) and (t0>tobsh) then
    begin
    htek:=hnach+v*(t0-tobsh)-(a*sqr(t0-tobsh))/2;
    vtek:=v-a*(t0-tobsh);
    end;
  tobsh:=tobsh+ttek;
  hnach:=v*ttek-a*sqr(ttek)/2;
  if hmax<hnach then
    hmax:=hnach;
  v:=0;
  end;
{podschet obshego vremeni}
  while not( (abs(hnach)<0.01) or ((k_upr>0.999999)and(tobsh>t0))) do
    begin
    {telo letit vniz}

      ttek:=sqrt(2*hnach/a);
      if (tobsh+ttek>=t0) and (t0>tobsh) then
        begin
        htek:=hnach-v*(t0-tobsh)-(a*sqr(t0-tobsh))/2;
        vtek:=v+a*(t0-tobsh);
        end;
      tobsh:=tobsh+ttek;
      v:=v+a*ttek;
      hnach:=0;
      {udar}
      v:=sqrt(k_upr)*v;
      napravl:=1;

    {telo letit vverh}

      ttek:=v/a;
      if (tobsh+ttek>=t0) and (t0>tobsh) then
        begin
        htek:=hnach+v*(t0-tobsh)-(a*sqr(t0-tobsh))/2;
        vtek:=v-a*(t0-tobsh);
        end;
      tobsh:=tobsh+ttek;
      hnach:=hnach+v*ttek-(a*sqr(ttek))/2;
      v:=0;
    end;
if vyvod then
  begin
  assign(f,'result.txt');
  rewrite(f);
  if k_upr<0.999999 then
    begin
    str(tobsh:2:2,s);
    s:='obshee vremya: '+s+'s';
    writeln(s);
    writeln(f,s);
    end
  else
    begin
    s:='prygaet do beskonechnosti';
    writeln(f,s);
    writeln(s);
    end;
  str(hmax:2:2,s);
  s:='max vysota: '+s+'m';
  writeln(s);
  writeln(f,s);
  if t0>tobsh then
    begin
    str(t0:2:2,s);
    s:='cherez '+s+'s uge prosto legit';
    writeln(s);
    writeln(f,s);
    end
  else
    begin
    str(t0:2:2,s);
    s:='cherez '+s+'s';
    writeln(s);
    writeln(f,s);
    str(htek:2:2,s);
    s:='  vysota '+s+' m';
    writeln(s);
    writeln(f,s);
    str(vtek:2:2,s);
    s:='  skorost '+s+'m/s';
    writeln(s);
    writeln(f,s);
    end;
  close(f);
  end;
end;

begin
vvod;
raschet(true);
readln;
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
setcolor(4);
rastyag:=GetMaxY/(2*hmax);
rastyagx:=(GetMaxX-20)/tobsh;
moveto(20,300-trunc(rastyag*h0));
for i:=1 to 500 do
  begin
  t0:=i/rastyagx;
  v:=v0;
  hnach:=h0;
  tobsh:=0;
  raschet(false);
 lineto(i+20, 300-trunc(rastyag*htek));
 { writeln(i,' ',trunc(100*htek));}
  end;
readkey;
end.