Cod sursa(job #4802)

Utilizator gigi_becaliGigi Becali gigi_becali Data 7 ianuarie 2007 15:16:24
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#include <string>

int min(int a, int b) { if(a<b) return a; return b;}
int main()
{
	int s1[1<<14], s2[1<<14];
	int n, W, cost[1<<14], e[1<<14];

	memset(s1, 0x3f3f3f3f, sizeof(s1));
	memset(s2, 0x3f3f3f3f, sizeof(s2));
	freopen("energii.in", "r", stdin);
	scanf("%d\n",&n);
	scanf("%d\n", &W);
	int i, j, energie;
	for(i=1;i<=n;i++) scanf("%d %d\n", e+i, cost+i);

	for(i=1;i<=W;i++)
		for(j=1;j<=n;j++)
		{
			energie=i-e[j];
			if(energie<=0)
			{
				if(j==1) s1[i]=cost[j];
					else s1[i]=min(s2[i], cost[j]);
			}
			else
			{
				if(j==1) s1[i]=0x3f3f3f3f;
				else s1[i]=min(s2[i], cost[j]+s2[energie]);
			}
		}
		
	//	for(i=1;i<=W;i++) printf("%d %d\n", s1[i], s2[i]);
	freopen("energii.out", "w", stdout);
	printf("%d\n", s1[W]);
	return 0;
}