Informatika gyűjtemény

Egy szinttel feljebb fg_mal.dpr

2004050607080910

NézetNyomtat

fg_mal.dpr (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
{$APPTYPE CONSOLE}
PROGRAM malac2;
USES SysUtils;

CONST
    ch = '9';
    inputFile = 'malac'+ch+'.be';
    outputFile = 'malac'+ch+'.kix';

    maxn = 100;
    maxs = 10000;

VAR
    s, n: INTEGER;
    suly : ARRAY [1..maxn] OF SMALLINT;  {a penzerme sulya}
    ertek: ARRAY [1..maxn] OF BYTE;      {a penzerme erteke}

    cache: ARRAY [1..maxs] OF LONGINT;

PROCEDURE Load;
VAR
    T: Text;
    i: INTEGER;
BEGIN
    Assign(T, inputFile);
    Reset(T);
    ReadLn(T, S);
    ReadLn(T, N);
    FOR i:= 1 TO n DO
    BEGIN
        ReadLn(T, ertek[i], suly[i]);
    END;
    Close(T);
END; {Load}

PROCEDURE MinErtek(S: INTEGER);
VAR
    i: INTEGER;
    min_ertek, ertek0: LONGINT;
    S0: INTEGER;
BEGIN
    IF = 0 THEN cache[S]:= 0
    ELSE
    BEGIN
        min_ertek:= -1;
        FOR i:= 1 TO N DO
        BEGIN
            S0:= S - suly[i];
            IF S0 >= 0 THEN
            BEGIN
                IF cache[S0] >= 0 THEN
                BEGIN
                    ertek0:= cache[S0] + ertek[i];
                    IF (ertek0 < min_ertek) OR (min_ertek = -1) THEN
                    BEGIN
                        min_ertek:= ertek0;
                    END;
                END;
            END;
        END;
        cache[S]:= min_ertek;
    END;
END; {Less}

PROCEDURE Process;
VAR
    i: INTEGER;
    T: Text;
BEGIN
    FOR i:= 1 TO S DO
    BEGIN
         MinErtek(i);
    END;
    Assign(T, outputFile);
    Rewrite(T);
    WriteLn(T, cache[S]);
    Close(T);
END; {Process}

BEGIN
    Load;
    Process;
END.
(Vissza)