Cod sursa(job #274338)

Utilizator tinkyAndrei Ilisei tinky Data 9 martie 2009 17:14:17
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream.h>
int v[1002][3];
int main ()
{int w,g,i,j,s=0,x,cost=0,cmin=100000,tr,dif;
float r[1000];
ifstream in("energii.in");
ofstream out("energii.out");
in>>g>>w;
for (i=1;i<=g;i++)
	{in>>v[i][1]>>v[i][2];
	 r[i]=(float)v[i][1]/v[i][2];
	 }
for (i=2;i<=g;i++)
	for (j=i;j>=1;j--)
		if (r[j]<r[j-1])
			{tr=r[j];
			r[j]=r[j-1];
			r[j-1]=tr;

			tr=v[j][1];
			v[j][1]=v[j-1][1];
			v[j-1][1]=tr;

			tr=v[j][2];
			v[j][2]=v[j-1][2];
			v[j-1][2]=tr;
			}
//for (i=1;i<=g;i++)
//	out<<v[i][1]<<" "<<v[i][2]<<" "<<r[i]<<endl;

for (i=g;i>0;i--)
	 {if (s<=w)
		{cost=cost+v[i][2];
		s=s+v[i][1];}
	 else
		break;
	 }

if (s<w)
	{dif=w-s;
	for (i=1;i<=g;i++)
		{if (v[i][1]>=dif);
			if (v[i][2]<cmin)
				cmin=v[i][2];
		}
	cost=cost+cmin;
	}

if (s<w)
	out<<-1;
else
	out<<cost;

in.close();
out.close();
return 0;
}