Informatika gyűjtemény

Egy szinttel feljebb fn_malom.pas

2004050607080910

NézetNyomtat

fn_malom.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
program malom;

type mal=record
         kit :longint;
         tav :longint;
         end;
     cella=record
         ut :longint;
         ar :longint;
         end;



var n,:longint;
    a :array[0..101] of mal;
    b :array[0..101,0..101] of cella;
    s :array[0..101] of longint;
    r :array[0..101] of longint;
procedure beolvas;
var i :longint;
    t :text;
begin
    assign(t,'malom.be');
    reset(t);
    readln(t,n,k);
    for i:=1 to n do
    begin
        a[i].kit:=0;
        a[i].tav:=0;
    end;
    for i:=1 to n do
    begin
        readln(t,a[i].tav,a[i].kit);
    end;
    close(t);
end;


function szakasz(e,:longint) :longint;
begin
    szakasz:=s[f-1]-s[e]-(r[f-1]-r[e])*a[e].tav;
end;



procedure kitolt;
var i,j,min,l,minut,x,:longint;
begin
    for i:=0 to 101 do
    begin
        for j:=0 to 101 do
        begin
            b[i,j].ut:=0;
            b[i,j].ar:=0;
        end;
    end;
    for i:=0 to 101 do
    begin
        s[i]:=0;
        r[i]:=0;
    end;
    for i:=1 to n  do
    begin
        s[i]:=s[i-1]+a[i].kit*a[i].tav;
        r[i]:=r[i-1]+a[i].kit;
    end;
    for i:=0 to n do
    begin
        b[0,i].ar:=s[i];
        b[0,i].ut:=i;
    end;
    for i:=1 to k do
    begin
        for j:=to n do
        begin
            min:=s[n];
            minut:=n;
            for l:=to j do
            begin
                if b[i-1,l-1].ar+szakasz(l,j+1)<min then
                begin
                     min:=b[i-1,l-1].ar+szakasz(l,j+1);
                     minut:=l;
                end;
            end;
            b[i,j].ar:=min;
            b[i,j].ut:=minut;
        end;
    end;
    writeln(b[k,n].ar);
    x:=k;
    y:=n;
    for i:=1 to k do
    begin
        writeln(b[x,y].ut);
        x:=x-1;
        y:=b[x,y].ut-1;
    end;
end;




begin
beolvas;
kitolt;
end.

(Vissza)