Pagini recente » Cod sursa (job #812552) | Cod sursa (job #1108414) | Cod sursa (job #286718) | Cod sursa (job #2848721) | Cod sursa (job #931579)
Cod sursa(job #931579)
#include <stdio.h>
int main()
{
int i, j, g, w;
int* eg;
int* cg;
int* c;
int p = -1;
freopen("energii.in", "rt", stdin);
freopen("energii.out", "wt", stdout);
scanf("%d%d", &g, &w);
eg = new int[g];
cg = new int[g];
c = new int[ (2 * w) + 1 ];
c[0] = 1;
for(i = 1; i < (2 * w) + 1; i++) c[i] = 0;
for(i = 0; i < g; i++)
{
scanf("%d%d", &eg[i], &cg[i]);
}
for(i = 0; i < g; i++)
{
for(j = 2 * w; j >= eg[i]; j--)
{
if(c[j - eg[i]] && (!c[j] || (c[j - eg[i]] + cg[i] < c[j])))
{
c[j] = c[j - eg[i]] + cg[i];
if(j >= w)
{
if((p == -1) || (c[p] > c[j]))
p = j;
}
}
}
}
if(p != -1)
{
printf("%d\n", c[p] - 1);
}
else
{
printf("-1\n");
}
return 0;
}