Informatika gyűjtemény

Egy szinttel feljebb fg_terem.pas

2004050607080910

NézetNyomtat

fg_terem.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+} {$Q+}
PROGRAM Terem;
CONST
    maxn = 1000;
    ch = '1';
    inputFile = '';
    outputFile = '';
    
TYPE
    esemeny = RECORD
        A, B: INTEGER;
        id, terem: INTEGER;
    END;

VAR
    N, T: INTEGER;
    esem: ARRAY [1..maxn] OF esemeny;
    terem: ARRAY [1..maxn] OF BOOLEAN;

PROCEDURE Load;
VAR
    T: Text;
    i: INTEGER;
BEGIN
    Assign(T, inputFile);
    Reset(T);
    ReadLn(T, N);
    FOR i:= 1 TO N DO
    BEGIN
        ReadLn(T, esem[i].A, esem[i].B);
        esem[i].id:= i;
    END;
    Close(T);
END; {Load}

PROCEDURE Main;
VAR
    i, j, T0: INTEGER;
    E: Esemeny;
BEGIN
    FOR i:= 1 TO N DO
    BEGIN
        FOR j:= i+1 TO N DO
        BEGIN
            IF (esem[i].> esem[j].A) THEN
            BEGIN
                E:= esem[i]; esem[i]:= esem[j]; esem[j]:= E;
            END;
        END;
    END;
    
    T:= 0;
    FOR i:= 1 TO N DO
    BEGIN
        FOR j:= 1 TO i DO terem[j]:= TRUE;
        FOR j:= 1 TO i-1 DO
        BEGIN
            IF (esem[i].<= esem[j].B) THEN terem[ esem[j].terem ]:= FALSE;
        END;
        
        T0:= 1;
        WHILE (terem[T0] = FALSE) DO INC(T0);
        
        esem[i].terem:= T0;
        IF T0 > T THEN T:= T0;
    END;
END; {Main}

PROCEDURE Save;
VAR
    Te: Text;
    i, j: INTEGER;
BEGIN
    Assign(Te, outputFile);
    Rewrite(Te);
    WriteLn(Te, T);
    FOR i:= 1 TO T DO
    BEGIN
        FOR j:= 1 TO N DO
        BEGIN
            IF esem[j].terem = i THEN Write(Te, esem[j].id, ' ');
        END;
        WriteLn(Te);
    END;
    Close(Te);
END; {Save}

BEGIN
    Load;
    Main;
    Save;
END.
(Vissza)