Letöltés: ep_fazekas.dpr {$A+,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O+,P+,Q+,R+,S-,T-,U-,V+,W-,X+,Y+,Z1} {$MINSTACKSIZE $00004000} {$MAXSTACKSIZE $00100000} {$IMAGEBASE $00400000} {$APPTYPE GUI} program fazekas2; {$APPTYPE CONSOLE} uses SysUtils; const ch = '2'; inputFile = 'FAZEKAS'+ch+'.BE'; outputFile = 'FAZEKAS'+ch+'.KI'; realOutput = 'FAZEKAS'+ch+'.KIX'; maxn = 10000; var N,K : integer; list : Array[1..maxn] of Record e:Byte; End; cache : Array[1..maxn+1] of Longint; choice : Array[1..maxn+1] of Longint; j : Integer; procedure load; var T : Text; i : integer; begin assign(T, inputfile); reset(T); readln(T,N,K); for i:= 1 To N Do readln(T,List[i].e); Close(T); for i:=1 To maxn+1 Do cache[i] := 0; for i := 1 To maxn+1 Do choice[i] := 0; End; Procedure best(et:longint); var min:Longint; ido:Longint; max:Longint; i : Longint; v : Longint; begin min := -1; max := 0; v := et+k-1; If v>n Then v:= n; For i := et To v Do Begin if list[i].e > max Then max := list[i].e; ido := max+cache[i+1]; if (ido < min) or (min=-1) then begin min := ido; choice[et] := i; end; End; cache[et] := min; end; begin { TODO -oUser -cConsole Main : Insert code here } load; cache[N+1]:=0; For j := N DownTo 1 Do best(j); writeln(cache[1]); j := 1; Writeln(j,' ',choice[j]); While choice[j] < n do begin j := choice[j]+1; writeln(j,' ',choice[j]); end; readln; end. |