Cod sursa(job #131705)
#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;
}