Pagini recente » Cod sursa (job #2546404) | Cod sursa (job #1226011) | Cod sursa (job #1912318) | Cod sursa (job #714191) | Cod sursa (job #2930248)
#include <cstdio>
#include <iostream>
using namespace std;
FILE *fin, *fout;
int g, w;
const int NMAX = 1000;
int e[NMAX + 2], c[NMAX + 2];
int dp[NMAX + 2][5002];
int main()
{
fin = fopen("energii.in", "r");
fout = fopen("energii.out", "w");
fscanf(fin, "%d%d", &g, &w);
for(int i = 1; i <= g; i++)
fscanf(fin, "%d%d", &e[i], &c[i]);
for(int i = 1; i <= g; i++)
dp[0][i] = 0;
for(int i = 1; i <= w; i++)
{
for(int j = 1; j <= g; j++)
{
if(i < e[j])
{
dp[i][j] = dp[i - 1][j];
continue;
}
if(dp[i - 1][j])
dp[i][j] = min(dp[i - 1][j], dp[i - e[j]][j] + c[j]);
else dp[i][j] = dp[i - e[j]][j] + c[j];
}
}
fprintf(fout , "%d" , dp[w][g]);
/*
for(int i = 1; i <= w; i++)
{
for(int j = 1; j <= g; j++)
fprintf(fout, "%d ", dp[i][j]);
fprintf(fout, "\n");
}
*/
fclose(fin);
fclose(fout);
return 0;
}