Pagini recente » Cod sursa (job #3195477) | Cod sursa (job #1928988) | Cod sursa (job #1212647) | Cod sursa (job #2288308) | Cod sursa (job #2927267)
#include <fstream>
#define inf 0x3f3f3f3f
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
struct generator
{
int energie, cost;
} v[1001];
int G, W, dp[15001];
int main()
{
fin>>G>>W;
for(int i=1; i<=G; i++)
fin>>v[i].energie>>v[i].cost;
fin.close();
for(int i=1; i<=15001; i++)
dp[i]=inf;
//dp[i] => costul minim pentru repornirea unor generatoare care sa produca o cantitate >=i de energie
for(int i=1; i<=G; i++)
for(int j=W; j>=0; j--)
{
if(v[i].energie<j)//daca generatorul i produce insuficient curent pentru repornirea centralei
dp[j]=min(dp[j], dp[j-v[i].energie]+v[i].cost);//luam in considerare costul pentru reparatia sa
else dp[j]=min(dp[j], v[i].cost);//daca produce suficient curent inseamna ca avem nevoie doar de generatorul i
}
if(dp[W]==inf)
fout<<-1;
else fout<<dp[W];
fout.close();
return 0;
}