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