Pagini recente » Cod sursa (job #1963429) | Cod sursa (job #2382045) | Cod sursa (job #2183056) | Cod sursa (job #1563302) | Cod sursa (job #2684464)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct generator
{
int energie;
int cost;
};
int main()
{
ifstream in("energii.in");
ofstream out ("energii.out");
int dp[100005];
int cate_generatoare, cost_repornire;
generator generatoare[1005];
in>>cate_generatoare>>cost_repornire;
for(int i=0; i<100000; i++)
{
dp[i]=9999999999;
}
for(int i=0; i<cate_generatoare; i++)
{
in>>generatoare[i].energie>>generatoare[i].cost;
dp[generatoare[i].energie]=generatoare[i].cost;
}
for(int i=0; i<cate_generatoare; i++)
{
for(int j=100000-generatoare[i].energie; j>=0; j--)
{
if(dp[j]>dp[j-generatoare[i].energie]+generatoare[i].cost)
dp[j]=dp[j-generatoare[i].energie]+generatoare[i].cost;
}
}
int cost_minim=100000000;
for(int i=cost_repornire; i<100000; i++)
{
cost_minim=min(cost_minim,dp[i]);
}
if(cost_minim==9999999999)
out<<-1;
else
out<<cost_minim;
return 0;
}