Informatika gyűjtemény

Egy szinttel feljebb futoszalag2.pas

2004050607080910

NézetNyomtat

futoszalag2.pas (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 1 KB
{R+}
Program futoszalag;

Type szalag=record kezd,veg,sebesseg:longint;
            End;

Var X,S,R,N:longint;
    t:double;
    Wi:array[1..1000] of szalag;
    Be:text;
    Sj:array[0..100] of longint;
    ido,ut:double;
    teszt,k:longint;
    
Procedure beolvas;
Var i:longint;
Begin
readln(be,X,S,R,t,N);
for i:=1 to N do
    Begin
    readln(be,Wi[i].kezd,Wi[i].veg,Wi[i].sebesseg);
    End;
End;

Procedure sebessegek;
Var i,ossz:longint;
Begin
for i:=0 to 100 do
    Begin
    sj[i]:=0;
    End;
for i:=1 to n do
    Begin
    sj[wi[i].sebesseg]:=sj[wi[i].sebesseg]+wi[i].veg-wi[i].kezd;
    End;
ossz:=0;
for i:=1 to 100 do
    Begin
    ossz:=ossz+sj[i];
    End;
sj[0]:=x-ossz;
End;

Procedure fut;
Var i,j:longint;
Begin
i:=0;
ido:=0;
ut:=0;
while (t>0) and (i<=100) do
    Begin
    if t>=sj[i]/(i+R) then 
        Begin
        t:=t-sj[i]/(i+R);
        ido:=ido+sj[i]/(i+R);
        i:=i+1;
        End
    else
        Begin
        ido:=ido+t;
        ut:=sj[i]-(t*(i+R));
        t:=0;
        ido:=ido+(ut/(i+S));
        i:=i+1;
        End;
    End;    
for j:=to 100 do
    Begin
    ido:=ido+(sj[j]/(J+S));
    End;
End;

Procedure ellenoriz;
Var i:longint;
Begin
for i:=0 to 100 do
    Begin
    if sj[i]>0 then writeln(i,':',sj[i]);
    End;
End;

Begin
assign(be,'large.in');
reset(be);
readln(be,teszt);
for k:=1 to teszt do
    Begin
    beolvas;
    sebessegek;
    fut;
    writeln('Case #',k,': ',ido:0:16);
    End;
End.
(Vissza)