Pagini recente » Cod sursa (job #2529303) | Cod sursa (job #2293623) | Cod sursa (job #681423) | Cod sursa (job #1779207) | Cod sursa (job #500732)
Cod sursa(job #500732)
#include<stdlib.h>
#include<stdio.h>
#include<limits.h>
int v[5001], n, w, max, inf=LONG_MAX, energ, cost;
int main()
{
FILE* in = fopen("energii.in", "r");
FILE* out = fopen("energii.out", "w");
fscanf(in, "%d %d", &n, &w);
for(int i=1; i<=w; i++)
v[i] = inf;
for(int i=0; i<n; i++)
{
fscanf(in, "%d %d", &energ, &cost);
for(int j=max; j>=0; j--)
{
if(v[j] != inf)
{
if(j+energ <= w)
{
if(v[j] + cost <= v[j+energ])
{
v[j+energ] = v[j] + cost;
if(j+energ > max)
max = j+energ;
}
}
else
{
if(v[w] > v[j] + cost)
{
v[w] = v[j] + cost;
max = w;
}
}
}
}
}
if(v[w] == inf)
fprintf(out, "-1");
else
fprintf(out, "%d", v[w]);
return 0;
}