Cod sursa(job #249882)

Utilizator razyelxrazyelx razyelx Data 29 ianuarie 2009 14:26:42
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream.h>
long long n,max,e[501000],a[1002],p[501000],c[1002],min,E;

ifstream in("energii.in");
ofstream out("energii.out");


int main(){
     int i,j;

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

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

		       if(max < j+a[i])max = j+a[i];
		       e[j+a[i]] = a[i];
		       p[j+a[i]] = p[j] + c[i];

		       if(p[j+a[i]]<min && j+a[i] >= E) min = p[j+a[i]];
		     }
     }

     if(max >= E && e[max]) out<<min;

     else out<<"-1";

     return 0;
}