Cod sursa(job #461422)

Utilizator hunter_ionutzzzFarcas Ionut hunter_ionutzzz Data 6 iunie 2010 19:16:13
Problema Energii Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1 kb
program energii;
type rec=record
   prod,cost:longint;
end;
var a:array[0..5001] of rec;
    b:array[0..5001] of longint;
    f,g:text;
    n,i,j,final,max:longint;
begin
  assign(f,'energii.in'); reset(f);
  assign(g,'energii.out'); rewrite(g);
  readln(f,n); readln(f,final);
  for i:=1 to n do read(f,a[i].prod,a[i].cost); {cantit/cost}
  for i:=1 to final do b[i]:=2500000;
  b[0]:=0; max:=0;
  for i:=1 to n do
    for j:=max downto 0 do begin
      if (b[j]>=0) then begin
         if (a[i].prod+j>=final) then
           if (b[final]>=a[i].cost+b[j]) then begin
               b[final]:=a[i].cost+b[j];
               max:=final;
           end
           else
         else if (b[j+a[i].prod]>=a[i].cost+b[j]) then begin
                  b[j+a[i].prod]:=a[i].cost+b[j];
                  if a[i].prod+j>max then max:=a[i].prod+j;
              end
              else
      end;
    end;
  if b[final]=2500000 then writeln(g,-1) else writeln(g,b[final]);
 close(f); close(g);
end.