Cod sursa(job #249594)

Utilizator razyelxrazyelx razyelx Data 28 ianuarie 2009 20:26:39
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream.h>
long long n,max,e[5000000],a[1002],l,p[5000000],c[1002],min,E;
ifstream in("energii.in");
ofstream out("energii.out");

int main(){
     int i,j,k;

     in>>n>>E;
     for(i=1;i<=n;i++)
	   in>>a[i]>>c[i];

     e[0] = -1;
     max  = 0;

     for(i=1;i<=n;i++){
	for(j=max;j>=0;j--)
	   if(e[j])
		     if(p[j+a[i]] <= p[j] + c[i]){
		       if(max < j+a[i])max = j+a[i];
		       e[j+a[i]] = a[i];
		       p[j+a[i]] = p[j] + c[i];
		     }

     }

     min = p[E];
     if(max >= E && e[max]){
	if(min)
	  k=1;
	else k=0;

	for(i=E;i<=max;i++){
	   if(!k)
	     if(p[i]){min = p[i];k=1;}
	   else if(p[i] && p[i]<min) min = p[i];
	}
	out<<min;

     }else out<<"-1";

     return 0;
}