Pagini recente » Cod sursa (job #1728220) | Cod sursa (job #2386788) | Cod sursa (job #1467737) | Cod sursa (job #333232) | Cod sursa (job #53455)
Cod sursa(job #53455)
#include <stdio.h>
#define maxs 5001
#define maxn 1001
int CMin[maxs], uz[maxs][maxn], c[maxn], g[maxn], S, n;
void read()
{
int i;
FILE *f=fopen ("energii.in", "r");
fscanf (f, "%d", &n);
fscanf (f, "%d", &S);
for (i=0; i<n; ++i)
fscanf (f, "%d %d", &g[i], &c[i]);
fclose(f);
}
int main()
{
int i, j, k, jmin;
read();
for (i=1; i<=S; ++i)
{
CMin[i]=10001;
for (j=0; j<n; ++j)
{if (g[j]<=i)
if (CMin[i-g[j]]+c[j] < CMin[i] && !uz[i-g[j]][j])
{
CMin[i] = CMin[i-g[j]]+c[j];
jmin=j;
}
else;
else if (c[j]<CMin[i]) {CMin[i]=c[j]; jmin=j; }
}
if (g[jmin]<=i) for (k=0; k<n; ++k) uz[i][k]=uz[i-g[jmin]][k];
uz[i][jmin]=1;
}
FILE *g=fopen ("energii.out", "w");
fprintf (g, "%d\n", CMin[S]);
fclose(g);
return 0;
}