Pagini recente » Cod sursa (job #1331125) | Cod sursa (job #78313) | Cod sursa (job #2576719) | Cod sursa (job #2531890) | Cod sursa (job #111249)
Cod sursa(job #111249)
#include <stdio.h>
#define NMax 1001
#define GMax 15001
#define INF 1000000000
long n, g, gen[NMax], cost[NMax];
long cmin[GMax];
void read();
void solve();
void write();
int main()
{
read();
solve();
write();
return 0;
}
void solve()
{
long i, j;
cmin[0] = 0;
for (i = 1; i < GMax; i++)
cmin[i] = INF;
for (i = 0; i < n; i++)
for (j = GMax - 1; j >= 0; j--) //folosesc genratorul i
if (j + gen[i] < GMax && cmin[j + gen[i]] > cmin[j] + cost[i])
cmin[j + gen[i]] = cmin[j] + cost[i];
}
void read()
{
FILE *fin = fopen("energii.in", "rt");
fscanf(fin, "%ld %ld", &n, &g);
for (int i = 0; i < n; i++)
fscanf(fin, "%ld %ld", &gen[i], &cost[i]);
fclose(fin);
}
void write()
{
FILE *fout = fopen("energii.out", "wt");
long min = INF;
for (int i = g; i < GMax; i++)
{
if (cmin[i] < min)
min = cmin[i];
}
fprintf(fout, "%ld\n", min != INF ? min : -1);
fclose(fout);
}