Cod sursa(job #292381)

Utilizator lexu93Todor Alex lexu93 Data 31 martie 2009 08:44:43
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<fstream.h>   
  
const long inf=2000000000;   
struct gen{int e,c;};   
gen a[1002];   
long i,n,j,v[5002],w;   
ifstream fin("energii.in");   
ofstream fout("energii.out");   
  
int main()   
{   fin>>n>>w;   
    for(i=1;i<=n;i++)   
        fin>>a[i].e>>a[i].c;   
    for(i=1;i<=w;i++)   
        v[i]=inf;   
    for(i=1;i<=n;i++)   
        for(j=w-1;j>=0;j--)   
            if(v[j]!=inf)   
            {   if(j+a[i].e>=w&&v[j]+a[i].c<v[w])   
                    v[w]=v[j]+a[i].c;   
                if(j+a[i].e<w&&v[j]+a[i].c<v[j+a[i].e])   
                    v[j+a[i].e]=v[j]+a[i].c;   
            }   
    if(v[w]==inf)   
    {   fout<<"-1";return 0;}   
    fout<<v[w];   
    return 0;   
  
}  
#include<fstream.h>

const long inf=2000000000;
struct gen{int e,c;};
gen a[1002];
long i,n,j,v[5002],w;
ifstream fin("energii.in");
ofstream fout("energii.out");

int main()
{	fin>>n>>w;
	for(i=1;i<=n;i++)
		fin>>a[i].e>>a[i].c;
	for(i=1;i<=w;i++)
		v[i]=inf;
	for(i=1;i<=n;i++)
		for(j=w-1;j>=0;j--)
			if(v[j]!=inf)
			{	if(j+a[i].e>=w&&v[j]+a[i].c<v[w])
					v[w]=v[j]+a[i].c;
				if(j+a[i].e<w&&v[j]+a[i].c<v[j+a[i].e])
					v[j+a[i].e]=v[j]+a[i].c;
			}
	if(v[w]==inf)
	{	fout<<"-1";return 0;}
	fout<<v[w];
	return 0;

}