Cod sursa(job #1253362)

Utilizator CosminRusuCosmin Rusu CosminRusu Data 1 noiembrie 2014 10:29:11
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;

const int MAXG = 1005;
const int MAXW = 5005;

int g, w, dp[MAXG][MAXW], e[MAXG], c[MAXG];

int main() {
	ifstream fin("energii.in");
	ofstream fout("energii.out");
	
	fin >> g >> w;
	for(int i = 1 ; i <= g ; ++ i) {
		fin >> e[i] >> c[i];
	}
	memset(dp, 0x3f, sizeof(dp));
    for(int i = 1 ; i <= g ; ++ i) {
		for(int j = 1 ; j <= w ; ++ j) {
			if(j >= e[i]) {
				dp[i][j] = min(dp[i - 1][j], dp[i - 1][j - e[i]] + c[i]);
			} else
				dp[i][j] = min(dp[i - 1][j], c[i]);
		}
	}
	fout << "DA\n";
	if(dp[g][w] == 0x3f3f3f3f)
		fout << "-1\n";
	else
		fout << dp[g][w] << '\n';
}