Cod sursa(job #148362)

Utilizator belgun_adrianBelgun Dimitri Adrian belgun_adrian Data 4 martie 2008 10:50:19
Problema Energii Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.35 kb
//energii

var g,w,i,j,max,cost:integer;
    ener,inf:longint;
    a:array[0..5050] of longint;
    gen:array[1..1050] of record eng,cst:integer; end;

procedure scriere(x:longint);
        var f:text;
        begin
        assign(f,'energii.out'); rewrite(f);
         writeln(f,x);
        close(f);
        end;

procedure citire;
        var f:text;
            i,j,x,y:integer;
            s:longint;
        begin
        s:=0;
        assign(f,'energii.in');
                reset(f);
                readln(f,g);
                readln(f,w);
                for i:=1 to g do begin
                    readln(f,x,y);
                    gen[i].eng:=x;
                    gen[i].cst:=y;
                    s:=s+x;
                    end;
                close(f);
        if s<w then begin
                scriere(-1);
                halt;
                end;
        end;



begin
citire;
//fillchar(a,4*w+4,255);
for i:=0 to w do
    a[i]:=20000000;
inf:=a[0];
a[0]:=0;
max:=0;
for i:=1 to g do begin
    for j:=max downto 0 do begin
     if a[j]<>inf then begin
        cost:=a[j]+gen[i].cst;
        ener:=( j +gen[i].eng);
        if ener>w   then ener:=w;
        if ener>max then max:=ener;
        if a[ener]>cost then
           a[ener]:=cost;
        end;
        end;
    end;
scriere(a[w]);
end.