Informatika gyűjtemény

Egy szinttel feljebb futoszalag.pas

2004050607080910

NézetNyomtat

futoszalag.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
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;
    Si:array[1..106] 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,j:longint;
Begin
for i:=1 to x do
    Begin
    si[i]:=0;
    End;
for i:=1 to N do
    Begin
    for j:=wi[i].kezd+1 to wi[i].veg do
        Begin
        si[j]:=wi[i].sebesseg;
        End;
    End;
End;

Procedure rendez;
Var i,j,min,hely:longint;
Begin
for i:=1 to x do
    Begin
    min:=si[i];
    hely:=i;
    for j:=i+1 to x do
        Begin
        if si[j]<min then 
            Begin
            min:=si[j];
            hely:=j;
            End;
        End;
    si[hely]:=si[i];
    si[i]:=min; 
    End;
End;

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

Procedure ellenoriz;
Var i:longint;
Begin
writeln(x);
for i:=1 to x do
    Begin
    writeln(i,':',si[i]);
    End;
End;

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