Cod sursa(job #676691)

Utilizator OpportunityVlad Negura Opportunity Data 9 februarie 2012 15:30:59
Problema Energii Scor 95
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.96 kb
program p1;
type generator=record
                putere,cost:integer;
               end;
var fi,fo:text;
    n,w,i,j,x:integer;
    a:array[0..1100]of generator;
    t:array[0..1,-6000..6000] of integer;

procedure citire;
 begin
  read(fi,n,w);
  for i:=1 to n do
    read(fi,a[i].putere,a[i].cost);
  for i:=-100 to w do
   begin
    t[0,i]:=9999;
    t[1,i]:=9999;
   end;
 end;

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

procedure rezolvare;
 begin
  x:=0;
  for i:=1 to n do
   begin
    for j:=1 to w do
     if j>a[i].putere then t[1-x,j]:=min(t[x,j],t[x,j-a[i].putere]+a[i].cost)
                       else t[1-x,j]:=min(t[x,j],a[i].cost);
    x:=1-x;
   end;
 end;

procedure afisare;
 begin
  if t[x,w]=maxint then write(fo,-1)
                   else write(fo,t[x,w]);
 end;

BEGIN
 assign(fi,'energii.in'); reset(fi);
 assign(fo,'energii.out'); rewrite(fo);

  citire;
  rezolvare;
  afisare;

 close(fi); close(fo);
END.