Cod sursa(job #132163)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 5 februarie 2008 11:30:20
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb

#include <fstream.h>

ifstream fin ("energii.in");
ofstream fout("energii.out");

long a[10010],sir[1000001],cost[1000010],n,K,c[10010];

void citire()
{
  fin>>n>>K;
  for (int i=0;i<n;i++)
     fin>>a[i]>>c[i];
  fin.close();
}

long min (long a,long b)
{
    return a<b?a:b;
}

void gen()
{
  long min=1000500000;
   sir[0]=1;
   for (int i=0;i<n;i++)
     for (int j=K;j>=0;j--)
	if (sir[j]==1)
	 {
	   int pp=1;
		 sir[j+pp*a[i]]=1;
		 if (cost[j+pp*a[i]]!=0)
		 cost[j+pp*a[i]]=min(cost[j]+pp*c[i],cost[j+pp*a[i]]);
		 else
		   cost[j+pp*a[i]]=cost[j]+pp*c[i];
		 if (j+pp*a[i]>=K)
		    if (cost[j+pp*a[i]]<min)
			min=cost[j+pp*a[i]];
		 pp++;
	}
      if (min==1000500000)
	 fout<<"-1\n";
      else       {
       fout<<min<<"\n";
   }

}

int main ()
{
   citire();
   gen();
   fout.close();
   return 0;
}