Cod sursa(job #413750)

Utilizator ClasianMunteanu Petre Clasian Data 9 martie 2010 07:59:28
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream.h>
ifstream f("energii.in");
ofstream h("energii.out");
int n,i,e[1001],c[1001],max,j,mx=1000000000;
int s,g,cst[200000];
int main()
{ f>>n>>g;
  for(i=1;i<=n;i++) { f>>e[i]>>c[i];
					  s+=e[i];
				    }
 if(g>s)h<<-1;
 else { max=0;cst[0]=1;
        for(i=1;i<=n;i++) { 
			for(j=max;j>=0;j--)if(cst[j] && (!cst[j+e[i]] || cst[j+e[i]]>cst[j]+c[i] )) { cst[j+e[i]]=cst[j]+c[i];
																						  if(j+e[i]>max)max=j+e[i];
																						  if(j+e[i]>=g&&mx>cst[j+e[i]])mx=cst[j+e[i]];
																						}
			if(max>g)max=g;}
		h<<mx-1;
		/*i=g;
		while(!cst[i])i++;n=cst[i++];
		for(;i<=max;i++)if(cst[i]&&n>cst[i])n=cst[i];
		h<<n-1;*/
	 }
  f.close();
  h.close();
  return 0;
}