Cod sursa(job #2810551)

Utilizator andrei_blanaruAndrei Blanaru andrei_blanaru Data 29 noiembrie 2021 17:27:58
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#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;
}