Cod sursa(job #301866)

Utilizator mottyMatei-Dan Epure motty Data 8 aprilie 2009 14:58:11
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<cstdio>
#include<vector>
#define N 20010
#define G 5010
#define INF 1000000001
#define min(a,b) a<b ? a:b
using namespace std;
int en[G],pr[G],w,g,pmax,v[N];

void cit()
{
	scanf("%d%d",&g,&w);
	for( int i=0 ; i<g ; ++i )
	{
		scanf("%d%d",&en[i],&pr[i]);
		pmax+=en[i];
	}
	for( int i=1 ; i<N ; ++i )
		v[i]=INF;
}

void calc()
{
	for( int i=0 ; i<g ; ++i )
		for( int j=w-1 ; j>=0 ; --j )
			if( v[j]!=INF )
				if( v[ j + en[i] ] > v[j] + pr[i] )
					v[ j + en[i] ] = v[j] + pr[i] ;
}

void scr()
{/*
	for( int i=0 ; i<=pmax ; ++i )
		printf("%d ",v[i]);
	printf("\n");*/
	int rez=INF;
	for( int i=w ; i<=pmax ; ++i )
		rez=min( rez , v[i] );
	if( rez==INF )
		printf("-1\n");
	else
		printf("%d\n",rez);
}

int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	cit();
	if(pmax<w)
	{
		printf("-1\n");
		return 0;
	}
	//calc();
	scr();
	return 0;
}