Cod sursa(job #54261)

Utilizator Snavenportnespecificat Snavenport Data 24 aprilie 2007 17:27:26
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream.h>
ifstream f("energii.in");
ofstream h("energii.out");
main()
{
 int a[1001],b[1001],suma[10000],ales[10000];
 long cost[10000];
 int i,j,s,n,g;
 f>>n;
 f>>s;
 for (i=1;i<=n;i++)
   {
   f>>a[i];
   f>>b[i];
   }
 for (i=1;i<=9999;i++)
  {
   ales[i]=0;
   cost[i]=0;
   suma[i]=i;
  }
 f.close();
 cost[a[1]]=b[1];
 ales[a[1]]=1;
 int imax=a[1];
 long sum;
 for (i=2;i<=n;i++)
  {
   cost[a[i]]=b[i];
   ales[a[i]]=i;
   j=1;
   while (j<imax)
    {
    if (j!=i || ales[j]<i)
     {
      if (cost[j]!=0)
	{
	 sum=suma[j]+a[i];
	 cost[sum]=cost[j]+b[i];
	 ales[sum]=j;
	 if (sum>imax)
	   imax=sum;
	}
      }
     j++;
    }
  }
 long min=cost[s];
 for (i=s;i<=imax;i++)
   if(cost[i]<min && cost[i]!=0)
     min=cost[i];
 h<<min;
}