Pagini recente » Cod sursa (job #1812996) | Cod sursa (job #935511) | Cod sursa (job #1227224) | Cod sursa (job #518717) | Cod sursa (job #948312)
Cod sursa(job #948312)
#include <cstdio>
using namespace std;
const int MaxN = 1001, MaxS = 5001;
int n, s, v[MaxN], cost[MaxN];
int c[MaxS];
int Minim = 999999999;
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
int i, j, k;
scanf("%d%d",&n,&s);
for (int k=1; k<=n; ++k)
scanf("%d%d",&v[k],&cost[k]);
for (j=1; j<=s; ++j) c[j] = -1;
c[0] = 0;
for (i=1; i<=n; ++i)
for (j=s; j>=0; --j)
if (c[j] != -1)
{
if (j + v[i] > s)
if (Minim > c[j] + cost[i])
Minim = c[j] + cost[i];
if (j + v[i] <= s)
if (c[j + v[i]] > c[j] + cost[i] || c[j + v[i]] == -1)
c[j + v[i]] = c[j] + cost[i];
}
if (c[s] == -1 && Minim == 999999999)
printf("-1");
else{
if(Minim < c[s])
printf("%d",Minim);
if(c[s]<Minim)
printf("%d",c[s]);
}
return 0;
}