Cod sursa(job #4369)

Utilizator be_smartellora be_smart Data 2 ianuarie 2007 22:37:54
Problema Energii Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream.h>
#include <iostream.h>
long v[10001],C[1001],E[1001];
int main()
{
    int G,W,i,j;
    long sum=0;
    ifstream f("energii.in");
    ofstream g("energii.out");
    f>>G>>W;
    for(i=1;i<=G;i++)
    {
	f>>E[i];
	f>>C[i];
	sum+=E[i];
    }
    f.close();
    if(sum<W) {g<<-1; g.close(); return 0;}
    for(i=1;i<=G;i++)
       for(j=W;j>=0;j--)
	   if(/*(v[j]!=0 ||j==0)&&*/ v[j+E[i]]==0)
	      v[j+E[i]]=C[i]+v[j];
	   else
	     if(/*(v[j]!=0 ||j==0)&&*/ v[j+E[i]]!=0 && v[j+E[i]]>C[i]+v[j])
		v[j+E[i]]=C[i]+v[j];
    long minim;
    i=W;
    while(v[i]==0) i++;
    minim=v[i];
    for(j=i+1;j<10001;j++)
     if(v[j]<minim&&v[j]!=0)
       minim=v[j];
    g<<minim;
    g.close();
    return 0; 
}