Cod sursa(job #34653)

Utilizator gigi_becaliGigi Becali gigi_becali Data 21 martie 2007 09:42:20
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int dp[1001][5001];
int n, S;
int cost[1001], s[1001];

void citire()
{
	freopen("energii.in", "r", stdin);
	scanf("%d\n", &n);
	scanf("%d\n", &S);
	for(int i=1;i<=n;i++)scanf("%d %d\n", &s[i], &cost[i]);
}

void dynamic()
{
	int i, j;
	dp[1][s[1]]=cost[1];
	
	for(i=2;i<=n;i++)
		for(j=1;j<=S;j++)
		{
			dp[i][j]=min(dp[i-1][j], dp[i-1][j-s[i]]);
			if(dp[i][j]==dp[i-1][j-s[i]]) dp[i][j]+=cost[i];
		}
	printf("%d\n", dp[n][S]);
}

int main()
{
	citire();
	freopen("energii.out", "w", stdout);
	dynamic();
	return 0;
}