Pagini recente » Cod sursa (job #3134212) | Cod sursa (job #155105) | Cod sursa (job #1361716) | Cod sursa (job #982400) | Cod sursa (job #2810551)
#include <fstream>
#include <algorithm>
using namespace std;
int INF = 5000 * 10000;
int main() {
int generatoare, energie_necesara;
int cost_total[5001] = {0};
ifstream fin("energii.in");
fin >> generatoare >> energie_necesara;
for (int i=1; i<=energie_necesara; i++)
cost_total[i] = INF;
int *stop = cost_total + energie_necesara;
int energie, cost, cost_nou;
for (int i=0; i<generatoare; i++) {
fin >> energie >> cost;
cost_nou = *min_element(stop-energie, stop) + cost;
*stop = min(*stop, cost_nou);
for (int tinta=energie_necesara-1; tinta>=energie; tinta--) {
cost_nou = cost_total[tinta - energie] + cost;
cost_total[tinta] = min(cost_total[tinta], cost_nou);
}
}
ofstream fout("energii.out");
if (cost_total[energie_necesara] == INF)
fout << -1 << endl;
else
fout << cost_total[energie_necesara] << endl;
return 0;
}