Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 1 KB
PROGRAM kemence;
CONST
ch = '5';
inputFile = 'KEMENCE'+ch+'.BE';
outputFile = 'KEMENCE'+ch+'.KIX';
maxn = 10000;
VAR
N, K: INTEGER;
list: ARRAY [1..maxn] OF RECORD
E: BYTE;
S: INTEGER;
END;
choice: ARRAY [1..maxn] OF INTEGER;
PROCEDURE Load;
VAR
T: Text;
i: INTEGER;
BEGIN
Assign(T, inputFile);
Reset(T);
ReadLn(T, N, K);
FOR i:= 1 TO N DO
BEGIN
ReadLn(T, list[i].S, list[i].e);
END;
Close(T);
END;
PROCEDURE dummy_eljaras;
VAR
cache: ARRAY [1..maxn+1] OF LONGINT;
FUNCTION Best(elso_targy: INTEGER): LONGINT;
VAR
i: INTEGER;
max: LONGINT;
ido: LONGINT;
tmp: INTEGER;
s: INTEGER;
BEGIN
cache[elso_targy]:= -1;
max:= 0; s:= 0;
tmp:= elso_targy+K-1;
IF tmp > N THEN tmp:= N;
FOR i:= elso_targy TO tmp DO
BEGIN
s:= s+list[i].s;
IF s > K THEN BREAK;
IF list[i].e > max THEN max:= list[i].e;
ido:= max + cache[i+1];
IF (cache[elso_targy] = -1) OR (ido < cache[elso_targy]) THEN
BEGIN
cache[elso_targy]:= ido;
choice[elso_targy]:= i-elso_targy+1;
END;
END;
Best:= cache[elso_targy];
END;
PROCEDURE Process;
VAR
T: Text;
i: INTEGER;
BEGIN
Assign(T, outputFile);
Rewrite(T);
cache[N+1]:= 0;
FOR i:= N DOWNTO 1 DO Best(i);
WriteLn(T, cache[1]);
i:= 1;
WHILE i <= N DO
BEGIN
WriteLn(T, i, ' ', i+choice[i]-1);
i:= i+choice[i];
END;
Close(T);
END;
BEGIN
Load;
Process;
END;
BEGIN
dummy_eljaras;
END.