Informatika gyűjtemény

Egy szinttel feljebb check.pas

2004050607080910

NézetNyomtat

check.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: 2 KB
{$R+} {$Q+}
PROGRAM chk0;
CONST
    maxido = 1440;
    
VAR
    inputFile, outputFile: STRING;
    
    elist: ARRAY [1..1000] OF BOOLEAN;
    esem: ARRAY [1..1000] OF RECORD
        a, b: INTEGER;
    END;
    
    tesm: ARRAY [1..1000] OF INTEGER;
    
    simult: ARRAY [1..maxido + 1] OF INTEGER;
    
    max: INTEGER; {maximum es optimum egyben (az maximalis klikk merete)}

    jo: BOOLEAN;
    
PROCEDURE GetMax();
VAR
    i, cur: INTEGER;
BEGIN
    cur:= 0;
    FOR i:= 1 TO maxido DO
    BEGIN
        cur:= cur+simult[i];
        IF (= 1) OR (cur > max) THEN max:= cur;
        IF cur < 0 THEN
        BEGIN
            WriteLn('belso hiba');
        END;
    END;
END; {GetMax}

PROCEDURE Main;
VAR
    be, ki: Text;
    N, T, i, nr, j, k, x, y: INTEGER;
    ch: CHAR;
BEGIN
    jo:= TRUE;
    
    Assign(be, inputFile);
    {$i-} Reset(be); {$i+}
    IF IOResult <> 0 THEN
    BEGIN
        WriteLn('nem tudom megnyitni: ', inputFile);
        HALT;
    END;
    
    ReadLn(be, N);
    FOR i:= 1 TO N DO
    BEGIN
        simult[i]:= 0;
    END;
    FOR i:= 1 TO N DO
    BEGIN
        ReadLn(be, esem[i].A, esem[i].B);
        INC( simult[ esem[i].] );
        DEC( simult[ esem[i].B+1 ] );
        elist[i]:= FALSE;
    END;
    Close(be);
    GetMax();
    
    Assign(ki, outputFile);
    {$i-} Reset(ki); {$i+}
    IF IOResult <> 0 THEN
    BEGIN
        WriteLn('nem tudom megnyitni: ', outputFile);
        HALT;
    END;
    ReadLn(ki, T);
    IF <> max THEN
    BEGIN
        WriteLn('a felhasznalt termek szama: ', T, ' (',max,' lenne a helyes)'); jo:= FALSE;
    END;
    FOR i:= 1 TO T DO
    BEGIN
{       WriteLn('Terem: ', i);}
        nr:= 0;
        WHILE NOT Eoln(ki) DO
        BEGIN
            INC(nr);
            Read(ki, tesm[nr]);
            IF elist[tesm[nr]] = TRUE THEN
            BEGIN
                WriteLn('ketszer szerepel beosztva: ', tesm[nr]); jo:= FALSE;
            END;
            elist[tesm[nr]]:= TRUE;
{           WriteLn(' - ', tesm[nr]);}
            Read(ki, ch);
            IF ch <> ' ' THEN BREAK;
        END;
        ReadLn(ki);
        FOR j:= 1 TO nr DO
        BEGIN
            FOR k:= j+1 TO nr DO
            BEGIN
                x:= tesm[j]; y:= tesm[k];
                IF ((esem[x].<= esem[y].A) AND (esem[y].<= esem[x].B)) OR
                   ((esem[x].<= esem[y].B) AND (esem[y].<= esem[x].B)) THEN
                BEGIN
                    WriteLn('utkozik: ', x, ' ', y);
                    jo:= FALSE;
                END;
            END;
        END;
    END;    
    Close(ki);
    
    FOR i:= 1 TO N DO
    BEGIN
        IF elist[i] = FALSE THEN
        BEGIN
            WriteLn('Nincs beosztva: ', i);
            jo:= FALSE;
        END;
    END;
    IF jo THEN
    BEGIN
        WriteLn('helyes megoldas');
    END;
END; {Main}

BEGIN
    IF ParamCount = 2 THEN
    BEGIN
        inputFile:= ParamStr(1);
        outputFile:= ParamStr(2);
    END
    ELSE
    BEGIN
        WriteLn('hasznalat: check teremX.be teremX.ki');
        WriteLn('a fajlokat most is megadhatod:');
        Write('A bementi fajl: '); ReadLn(inputFile);
        Write('A kimeneti fajl: '); ReadLn(outputFile);
    END;
    WriteLn('[', inputFile, '--', outputFile,']');
    Main;
END.
(Vissza)