Cod sursa(job #2219230)

Utilizator oanceadavidOancea David oanceadavid Data 7 iulie 2018 21:02:55
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <climits>

using namespace std;

int cost[1002];
int powgen[1002];

int arr[5002];

int energy(int n, int capacity) {
	for (int i = 0; i < n; i++) {
		for (int j = capacity; j >= 0; j--) {
			if (j <= powgen[i]) {
				arr[j] = min(cost[i], arr[j]);
			}
			else {
				arr[j] = min(arr[j], cost[i] + arr[j - powgen[i]]);
			}
		}
	}
	return arr[capacity];
}

int main() {

	ifstream fin("energii.in");
	ofstream fout("energii.out");

	int n, c;
	fin >> n >> c;

	for (int i = 0; i <= c; i++) 
		arr[i] = INT_MAX;

	for (int i = 0; i < n; i++) {
		fin >> powgen[i];
		fin >> cost[i];
	}

	int res = energy(n, c);
	if (res == INT_MAX) {
		res = -1;
	}
	fout << res;
	return 0;
}