Cod sursa(job #1698305)

Utilizator perjulucianPerju Lucian Ionut perjulucian Data 4 mai 2016 02:44:51
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <iostream>
#include <algorithm>

std::ifstream f("energii.in");
std::ofstream g("energii.out");

const int INF = 10000000;

/*int * a = new int[10001];
int * b = new int[10001];*/

int matrix[1003][5003];

int cost[5003];
int energ[5003];
int G,W;

long testSum;

void read(){
	f >> G;
	f >> W;
	for(int i = 1 ; i <= G ; ++i){
		f >> energ[i] >> cost[i];
		testSum += energ[i];
	}
}

void calculate(){
	for(int i = 1 ; i <= W ; ++i){
		matrix[0][i] = INF;
	}

	for(int p = 1; p <= G ; ++p){
		for(int j = 1; j <= W ; ++j ){
			if(j < energ[p]){
				matrix[p][j] = std::min(cost[p], matrix[p-1][j]);
			}else{
				matrix[p][j] = std::min(matrix[p-1][j], matrix[p - 1][j - energ[p]] + cost[p]);
			}
		}
	}
}

int main(){
	read();

	
	if(testSum < W){
		g <<"-1";
	}else{
		calculate();
		g<<matrix[G][W];
	}

	f.close();
	g.close();
	return 0;
	
}