Cod sursa(job #34668)

Utilizator gigi_becaliGigi Becali gigi_becali Data 21 martie 2007 10:06:43
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#include <algorithm>
#include <string>
using namespace std;

int dp[5001];
bool x[5001];
int c[1001], e[1001], n, S;

int main()
{	
	freopen("energii.in", "r", stdin);
	scanf("%d\n", &n);
	scanf("%d\n", &S);
	for(int i=1;i<=n;i++) scanf("%d %d\n", &e[i], &c[i]);
	memset(dp, 0x3f3f3f3f ,sizeof(dp));
	x[0]=1;
	dp[0]=0;
	x[e[1]]=1;
	dp[e[1]]=c[1];
	int i, j;
	for(i=2;i<=n;i++)
		for(j=S;j>=0;j--)
		if(x[j])
		{
			if(j+e[i]>=S)
			{
				//printf("%d %d %d\n", j+e[i], j, dp[j]+c[i]);
				x[S]=1;
				dp[S]=min(dp[j]+c[i], dp[S]);
			}
			else 
			{
				x[j+e[i]]=1;
				dp[j+e[i]]=min(dp[j]+c[i], dp[j+e[i]]);
			}
		}

	//	for(i=1;i<=S;i++) printf("%d ",dp[i]);
	
	freopen("energii.out", "w", stdout);	
	printf("%d\n", dp[S]);
	return 0;
			
	
}