Cod sursa(job #697443)

Utilizator popacamilpopa camil popacamil Data 29 februarie 2012 09:15:12
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<iostream>
using namespace std;
const long long int inf=1000000000;
int n,m,v[1005][5005],i,j,w[1005],c[1005];
int main(){
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;++i){
		scanf("%d%d",&w[i],&c[i]);
	}
	for(i=1;i<=n;++i){
		for(j=1;j<=m;++j){
			v[i][j]=inf;
		}
	}
	for(i=1;i<=n;++i){
		for(j=1;j<=m;++j){
			if(i==1){
				if(j<=w[1]){
					v[i][j]=c[i];
				}
			}
			else{
				if(j<=w[i]){
					v[i][j]=min(v[i-1][j],c[i]);
				}
				else{
					v[i][j]=min(v[i-1][j-w[i]]+c[i],v[i-1][j]);
				}
			}
		}
	}
	if(v[n][m]==inf){
		printf("-1");
	}
	else{
		printf("%d",v[n][m]);
	}
	return 0;
}