Cod sursa(job #1044718)

Utilizator Vele_GeorgeVele George Vele_George Data 30 noiembrie 2013 11:47:51
Problema Energii Scor 40
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.36 kb
type vec=array[1..5010] of integer;
var  gen,watt,i,cmin:integer;
     w,c,d:vec;
     f,g:text;
function test(x,n:integer):byte;
 var i:integer;
  begin
   test:=0;
   for i:=1 to n do
    if d[i]=x then begin
                    test:=1;
                    break;
                   end;

  end;


function ins(pas,poz,ener,cost:integer):integer;
 var i,min,p:integer;
  begin
  d[pas]:=poz;
  if (ener>=watt) then begin
                        if (cost<cmin) then cmin:=cost;
                       end
                  else begin
                     min:=32000;
                     for i:=1 to gen do
                       if (test(i,pas)=0) then
                        if c[i]<min then begin
                                          min:=c[i];
                                          p:=i;
                                         end;
                     if (c[p]+cost<cmin) then
                      ins(pas+1,p,w[p]+ener,c[p]+cost);



                       end;
  end;

function backtrack:integer;
 var i:integer;
  begin
   for i:=1 to gen do
    if c[i]<cmin then ins(1,i,w[i],c[i]);
  end;




begin
assign(f,'energii.in' );reset(f);
assign(g,'energii.out');rewrite(g);
readln(f,gen);
readln(f,watt);
for i:=1 to gen do readln(f,w[i],c[i]);
close(f);
cmin:=32000;
backtrack;
write(g,cmin);
close(g);
end.