Cod sursa(job #1107617)

Utilizator span7aRazvan span7a Data 13 februarie 2014 23:56:49
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<fstream>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
/*ifstream f("energii.in");
ofstream g("energii.out");*/
int min(short a,short b)
{
	if(a<b)return a;
	else return b;
}
int C[1002][5002],se;
int Wp[1001],Cp[1001],G,W;
void solve()
{
	
	int i,j;
	if(se<W)
		printf("-1");
	else	
		{
			for(i=0;i<=G;i++)C[i][0]=10002;
		for(i=0;i<=W;i++)C[0][i]=10002;
		
		for(i=1;i<=G;i++)
			for(j=1;j<=W;j++)
				if (Wp[i]<j) 
					C[i][j]=min(Cp[i]+C[i-1][j-Wp[i]],C[i-1][j]);			
				 else C[i][j]=min(C[i-1][j],Cp[i]);
	//g<<C[G][W];
				 printf("%d",C[G][W]);
	}
}
int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	//f>>G>>W;
	scanf("%d%d",&G,&W);
	for(int i=1;i<=G;i++)
	{	
		//f>>Wp[i]>>Cp[i];
		scanf("%d%d",&Wp[i],&Cp[i]);
		se+=Wp[i];
	}
	solve();
	
	return 0;
	
}