Cod sursa(job #114675)

Utilizator ProtomanAndrei Purice Protoman Data 15 decembrie 2007 14:25:28
Problema Energii Scor 40
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.5 kb
type gener=record
           e,c:longint;
     end;

var f1,f2:text;
    i,j,g,w:longint;
    a:array[1..1010] of gener;
    aux:gener;
    v,vf,pos,posf:array[0..30000] of longint;
begin
        assign(f1,'energii.in');
        reset(f1);
        assign(f2,'energii.out');
        rewrite(f2);
        read(f1,g,w);
        for i:=1 to g do
                read(f1,a[i].e,a[i].c);
        for i:=1 to g-1 do
                for j:=i+1 to g do
                        if a[i].c<a[j].c then
                        begin
                                aux:=a[i];
                                a[i]:=a[j];
                                a[j]:=aux;
                        end;
        pos[0]:=1;
        posf[0]:=1;
        for i:=1 to g do
                for j:=0 to w do
                begin
                        if pos[j]=1 then
                                if (vf[j]+a[i].c<vf[j+a[i].e])or(vf[j+a[i].e]=0)or(j+a[i].e>=w) then
                                begin
                                        if (j+a[i].e>=w)and((vf[j]+a[i].c<v[w])or(vf[j]+a[i].c<v[w])) then
                                                v[w]:=vf[j]+a[i].c
                                        else v[j+a[i].e]:=vf[j]+a[i].c;
                                        posf[j+a[i].e]:=1;
                                end;
                        pos[j]:=posf[j];
                        vf[j]:=v[j];
                end;
        writeln(f2,v[w]);
        close(f1);
        close(f2);
end.