Cod sursa(job #73512)

Utilizator mlazariLazari Mihai mlazari Data 19 iulie 2007 08:52:34
Problema Energii Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.1 kb
Program Energii;
const big=10000001;
var G,W : integer;
    EG,CG : array[1..1000] of integer;
    C1,C2 : array[1..5000] of longint;

procedure Citeste;
var Intrare : text;
    i : integer;
begin
  assign(Intrare,'energii.in');
  reset(Intrare);
  readln(Intrare,G);
  readln(Intrare,W);
  for i:=1 to G do readln(Intrare,EG[i],CG[i]);
  close(Intrare);
end;

function min(a,b : integer) : integer;
begin
  if a<b then min:=a else min:=b;
end;

procedure Update(en,cost : integer);
var minim : integer;
begin
  minim:=min(en,W);
  if C2[minim]>cost then C2[minim]:=cost;
end;

procedure Calculeaza;
var i,j : integer;
begin
  for i:=1 to W do C2[i]:=big;
  C2[min(W,EG[1])]:=CG[1];
  for i:=2 to G do
   begin
     C1:=C2;
     Update(EG[i],CG[i]);
     for j:=1 to W do
      if C1[j]<big then Update(j+EG[i],C1[j]+CG[i]);
   end;
end;

procedure Scrie;
var Iesire : text;
begin
  assign(Iesire,'energii.out');
  rewrite(Iesire);
  if C2[W]<big then write(Iesire,C2[W])
   else write(Iesire,-1);
  close(Iesire);
end;

begin
  Citeste;
  Calculeaza;
  Scrie;
end.