Pagini recente » Cod sursa (job #2499003) | Cod sursa (job #2497105) | Cod sursa (job #1289193) | Cod sursa (job #1007663) | Cod sursa (job #1597120)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
const int dmax = 1002;
const int W_max = 5002;
int e[dmax];
int c[dmax];
int cost[W_max]; //cost[i] == COSTUL MINIM NECESAR PRODUCERII ENERGIEI i
int N, W;
int main()
{
int i, j, S = 0, Min;
in >> N; // NR GENERATOARE
in >> W; //ENERGIE NECESARA REPORNIRII CENTRALEI
for(i = 1; i <= N; i++)
{
in >> e[i] >> c[i];
S += e[i];
}
if(S < W) out << -1;
else
{
for(i = 1; i <= W; i++) cost[i] = -1;
cost[0] = 0;
for(i = 1; i <= N; i++)
for(j = W + e[i]; j >= e[i]; j--)
if( cost[j - e[i]] != -1)
{
if(j < W)
{
if( cost[j] > cost[j - e[i]] + c[i] || cost[j] == -1) cost[j] = cost[j - e[i]] + c[i];
}
else
if(cost[W] > cost[j - e[i]] + c[i] || cost[W] == -1) cost[W] = cost[ j - e[i] ] + c[i];
}
//for(i = 0; i <= W; i++) cout << cost[i] << " ";
Min = cost[W];
out << Min;
}
return 0;
}