Cod sursa(job #114684)

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

var f1,f2:text;
    i,j,g,w,f,p:longint;
    a:array[1..1010] of gener;
    aux:gener;
    v,vf,pos,posf:array[0..10000000] 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
                        p:=j+a[i].e;
                        f:=vf[j]+a[i].c;
                        if pos[j]=1 then
                                if (f<vf[p])or(vf[p]=0)or(p>w) then
                                begin
                                        if (p>w)and((f<v[w])or(v[w]=0)) then
                                                v[w]:=f
                                        else v[p]:=f;
                                        posf[p]:=1;
                                end;
                        pos[j]:=posf[j];
                        vf[j]:=v[j];
                end;
        if v[w]=0 then
                writeln(f2,-1)
        else writeln(f2,v[w]);
        close(f1);
        close(f2);
end.