Cod sursa(job #494847)

Utilizator vladcfVlad Frasineanu vladcf Data 23 octombrie 2010 09:43:59
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream.h>
int n,p,v[5001],x,y,s1,s2,i,j;
int main()
{
 ifstream f("energii.in");
 ofstream g("energii.out");
 f>>n;
 f>>p;
 s1=0;
 s2=0;
 for (i=1;i<=n;i++)
	{
	 f>>x>>y;
	 s1=s1+x;
	 s2=s2+y;
	 if (v[x]==0) v[x]=y;
		else
		if (v[x]>y) v[x]=y;
	}
 v[s1]=s2;
 if (s1<p) g<<-1;
	else
	{
	 if (p<=2501)
	  {
	  for (i=0;i<=p;i++)
		if (v[i]!=0)
			{
			 for (j=i+1;j<=p-i;j++)
				{
				 if (i+j<5001)
					if (v[i+j]>v[i]+v[j] && v[j]!=0)
						v[i+j]=v[i]+v[j];
				}
			}
	  }
	  else
	  {
	  for (i=0;i<=2501;i++)
		if (v[i]!=0)
			{
			 for (j=i+1;j<=p-i;j++)
				{
				 if (i+j<5001)
					if (v[i+j]>v[i]+v[j])
						v[i+j]=v[i]+v[j];
				}
			}
	  }

	}
 if (v[p]==0) g<<-1;
    else
    g<<v[p];
 f.close();
 g.close();
 return 0;
}