Programozás‎ > ‎Feladatok‎ > ‎Staféta‎ > ‎Megoldás‎ > ‎

lb_stafeta.pas

Letöltés: lb_stafeta.pas

PROGRAM stafeta;
USES crt;
VAR
    k,n,futo: INTEGER;    //tav, futok szama, hasznalt futok szama
    s,v: ARRAY[1..20000] OF INTEGER;    //start, vegzodes
    fsr: ARRAY[1..1000] OF INTEGER;    //milyen sorban futnak
 
PROCEDURE beolvas(honnan: STRING);
    VAR
        f: TEXT;
        i: INTEGER;
    BEGIN
        ASSIGN(f,honnan);
        RESET(f);
        READ(f,k);
        READ(f,n);
        FOR i:=1 TO n DO
            BEGIN
                READ(f,s[i]);
                READ(f,v[i]);
            END;
        CLOSE(f);
    END;
 
PROCEDURE megold;
    VAR
        i,ma,sr,hol: INTEGER;    //aktualis maximum, a hozza tartozo sorszam, hol tartunk
    BEGIN
        futo:=0;
        hol:=0;
        WHILE NOT(hol>=k) DO
            BEGIN
                ma:=hol;
                sr:=0;
                FOR i:=1 TO n DO
                    BEGIN
                        IF ((s[i]<=hol) AND (v[i]>ma)) THEN
                            BEGIN
                                ma:=v[i];
                                sr:=i;
                            END;
                    END;
                hol:=ma;
                futo:=futo+1;
                fsr[futo]:=sr;
            END;
        WRITELN(futo);
    END;
 
PROCEDURE kiiras(hova: STRING);
    VAR
        f: TEXT;
        i: INTEGER;
    BEGIN
        ASSIGN(f,hova);
        REWRITE(f);
        WRITELN(f,futo);
        FOR i:=1 TO futo DO
            BEGIN
                WRITE(f,fsr[i],' ');
            END;
        CLOSE(f);
    END;
 
PROCEDURE foprogram;
    BEGIN
        beolvas('stafeta.be7');
        megold;
        kiiras('stafetaki.txt');
    END;
 
BEGIN
    foprogram;
END.