Cod sursa(job #131705)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 4 februarie 2008 13:06:23
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream.h>

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

int a[1010],sir[1000001],cost[1000010],n,K,c[1010];

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

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

void gen()
{
   sir[0]=1;
   for (int i=0;i<n;i++)
     for (int j=K;j>=0;j--)
	if (sir[j]==1)
	 {
	    int pp=1;
	    while (j+pp*a[i]<=K)
	    {
		 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];
		 pp++;
	   }
	}
   long min=10000000;
   for (int p=K;p<K+1002;p++)
      if (sir[p]==1&& cost[p]<min)
	 min=cost[p];
   fout<<min<<"\n";
}

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