Pagini recente » Cod sursa (job #1911902) | Cod sursa (job #900730) | Cod sursa (job #2646351) | Cod sursa (job #387045) | Cod sursa (job #138057)
Cod sursa(job #138057)
#include <stdio.h>
#define lim 2000000000
int i,j,n,s,min;
int en[5010],g[5010][2];
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d",&n);
scanf("%d",&s);
for (i=1; i<=n; i++)
scanf("%d %d",&g[i][0],&g[i][1]);
min=lim;
for (i=1; i<=s; i++) en[i]=lim;
for (i=1; i<=n; i++)
{
for (j=s; j>=1; j--)
{
if (j+g[i][0]<s && en[j+g[i][0]]>en[j]+g[i][1]) en[j+g[i][0]]=en[j]+g[i][1];
if (j+g[i][0]>=s && min>en[j]+g[i][1]) min=en[j]+g[i][1];
}
if (g[i][0]>=s && g[i][1]<min) min=g[i][1];
if (g[i][0]<s && g[i][1]<en[g[i][0]]) en[g[i][0]]=g[i][1];
}
if (min!=lim) printf("%d\n",min);
else printf("-1\n");
return 0;
}