Cod sursa(job #71316)

Utilizator mlazariLazari Mihai mlazari Data 10 iulie 2007 07:23:48
Problema Energii Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.22 kb
Program Energii;
const mult=2000000;
var G,W : integer;
    St,nec: array[1..1000000] of longint;
    p : array[1..1000000] of boolean;
    pst,min : longint;

procedure Init;
var i : longint;
begin
  pst:=0;
  for i:=1 to 1000000 do
   begin
     p[i]:=false;
     nec[i]:=mult;
   end;
end;

procedure Update(s,c : longint);
begin
  if p[s] then
   begin
     if c<nec[s] then nec[s]:=c;
   end
   else
    begin
      p[s]:=true;
      pst:=pst+1;
      St[pst]:=s;
      nec[s]:=c;
    end;
end;

procedure Citeste;
var Intrare : text;
    i,E,C : integer;
    j : longint;
begin
  Init;
  assign(Intrare,'energii.in');
  reset(Intrare);
  readln(Intrare,G);
  readln(Intrare,W);
  for i:=1 to G do
   begin
     readln(Intrare,E,C);
     for j:=1 to pst do Update(E+St[j],C+nec[St[j]]);
     Update(E,C);
   end;
  close(Intrare);
end;

procedure Calculeaza;
var i : longint;
begin
  min:=mult;
  for i:=W to 1000*G do
   if nec[i]<min then min:=nec[i];
  if min=mult then min:=-1;
end;

procedure Scrie;
var Iesire : text;
begin
  assign(Iesire,'energii.out');
  rewrite(Iesire);
  write(Iesire,min);
  close(Iesire);
end;

begin
  Citeste;
  Calculeaza;
  Scrie;
end.