Cod sursa(job #59143)

Utilizator gozmanGrosu Andrei Nicolae gozman Data 8 mai 2007 11:05:23
Problema Energii Scor 5
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.25 kb
program energii;
type vec= array[1..1001] of word;
var en,c:vec;
    s:array[0..10001] of boolean;
    c1:array[0..10001] of word;
    g,n,i,j,w,vmax,cost,k:word;
    f:text;
    ok:boolean;
    procedure schimb(var v:vec; i,j:word);
    var  aux:word;
    begin
         aux:=v[i];
         v[i]:=v[j];
         v[j]:=aux;
    end;
    begin
    assign(f,'energii.in'); reset(f);
    readln(f,g); readln(f,w);
    for i:= 1 to g do
    readln(f,en[i],c[i]);
    close(f); k:=1;
    repeat
    ok:=true;
    for i:= 1 to g-k do
    if en[i]/c[i]<en[i+1]/c[i+1] then
                                  begin
                                       schimb(en,i,i+1);
                                       schimb(c,i,i+1);
                                       ok:=false;
                                  end;
    k:=k+1;
    until ok;
   s[0]:=false; cost:=65000; vmax:=0;
   for i:= 1 to g do
   for j:=vmax downto 0 do
   if not(s[j]) then
   begin
        s[j+en[i]]:=false;
        c1[j+en[i]]:=c1[j]+c[i];
       if j+en[i]>=w then
       if cost>c1[j]+c[i] then cost:=c1[j]+c[i];
   end;
   assign(f,'energii.out'); rewrite(f);
   if cost=65000 then writeln(f,'-1')
                  else writeln(f,cost);
  close(f);
  end.