Pagini recente » Cod sursa (job #2675958) | Cod sursa (job #617006) | Istoria paginii runda/rar31 | Cod sursa (job #1337628) | Cod sursa (job #2428443)
#include <fstream>
#define MAX 10002
#define INF 2e9
using namespace std;
struct
{
int energie;
int cost;
}a;
int dp[MAX];
int main()
{
int G, W, i, j, maxVal, Min = INF;
ifstream fin("energii.in");
ofstream fout("energii.out");
fin >> G >> W;
maxVal = 0;
for(i = 1; i < MAX; i++)dp[i] = INF;
for(i = 0; i < G; i++)
{
fin >> a.energie >> a.cost;
for(j = maxVal; j >= 0; j--)
{
if(j + a.energie < MAX && dp[j] + a.cost < dp[j + a.energie])
dp[j + a.energie] = dp[j] + a.cost;
}
if(maxVal + a.energie < MAX)maxVal += a.energie;
else maxVal = MAX - 1;
}
if(maxVal < W)fout << -1;
else
{
for(i = W; i < MAX; i++)
if(dp[i] != INF && dp[i] < Min)
Min = dp[i];
fout << Min;
}
fin.close();
fout.close();
return 0;
}