Cod sursa(job #490359)

Utilizator xtremespeedzeal xtreme Data 6 octombrie 2010 10:27:45
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>
#define Emax 10000000
#define INF 2000000000
#define Gmax 1000

int G, W, win[Emax+1], req[Gmax+1], gain[Gmax+1];

// win[i] = energy prodused with cost of i


void read()
      {
	   int i;		
	   
	   freopen("energii.in","r",stdin);
	   
	   scanf("%d%d",&G,&W);
	   for(i=1;i<=G;i++)
		       scanf("%d %d",&req[i],&gain[i]);
	   
	    for(i=1;i<=W;i++)
				win[i]=INF;
	   
	   fclose(stdin);
	  }
void solve()
	{
	 int i, j;	 
		
	 for(i=1;i<=G;i++)
		 for(j=1;j<=W;j++)
			    if(req[i]<=j && win[ j-req[i] ]+gain[i]<win[j])
					  win[j]=win[ j-req[i] ]+gain[i];
	}
void write()
	{
	 int i;
	 
	 freopen("energii.out","w",stdout);	
	 
	 for(i=2;i<=INF;i++)
		  if(win[i]>=W && win[i]!=INF )
			   { 
			    printf("%d\n",i);
		        break;
			   }
	 if(i==INF+1)
		    printf("-1\n");
	 
	 fclose(stdin);
	}
int main()
	{
	 read();
	 solve();
	 write();
	 return 0;
	}