Cod sursa(job #843948)

Utilizator superman_01Avramescu Cristian superman_01 Data 28 decembrie 2012 17:12:21
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<cstdio>

using namespace std;

int g,w_final,i,cost[2005],j;
long long minim=999999999;

struct gen{
	int w,c;
}a[1005];

int main()
{
  freopen("energii.in","r",stdin);
  freopen("energii.out","w",stdout);
  
  scanf("%d%d",&g,&w_final);
  for(i=1;i<=g;i++)
	  scanf("%d%d\n",&a[i].w,&a[i].c);
  
   for(i=1;i<=g;i++)
  {
	  
	  if(a[i].w>=w_final)
		  {
			  if(a[i].w<minim)
			    minim=a[i].c;
	  }
      else
	  {
		  for(j=i;j>=1;j--)
			  if((a[j].w+a[i].w)>=w_final)
			  {
				 if( (a[j].w+a[i].w) <= minim)
					 minim=a[j].c+a[i].c;
				  
			  }
			  else
				  if(  (a[j].w+a[i].w) >= a[i].w )
					{ 
     				a[i].w=a[j].w+a[i].w;
	     			  a[i].c=a[j].c+a[i].c;
					}

	  }		  
	  
  }
   if(minim!=999999999)
	   printf("%lld",minim);
   else  
    printf("-1");
   
	fclose(stdin);
	fclose(stdout);
	return 0;
}