Cod sursa(job #499261)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 9 noiembrie 2010 13:53:54
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<vector>
#include<cstdio>
#include<fstream>
#include<algorithm>

using namespace std;

#define m 1010

struct enrg {
	int a;
	int b;
	double c;
	};
	
	class compara{
		public:
		bool operator () (enrg x, enrg y) const
		{
			if(x.c>y.c)	return 1;
			if(x.c<y.c)	return 0;
			if(x.a<y.a)	return 1;
			if(x.a>y.a)	return 0;
			if(x.b<y.b)	return 1;
			return 0;
			}
		};

enrg v[m];
int n,w;

		int solve ()
		{
			
			int i=1,sol=0;
			for(;i<=n&&w>0;++i){
				sol+=v[i].b;
				w-=v[i].a;
				}
			if(w<=0)
			return sol;
			return -1;
			
			}

int main ()
{
	
	ifstream in ("energii.in");
	in>>n>>w;
	for(int i=1;i<=n;++i){
		in>>v[i].a>>v[i].b;
		v[i].c=(double)v[i].a/v[i].b;
		}
		in.close();
	sort(v+1,v+n+1, compara() );
	for(int i=1;i<=n;++i)
	printf("%d %d %lf\n",v[i].a,v[i].b,v[i].c);
	freopen ("energii.out","w",stdout);	
	printf("%d\n",solve());
	
	return 0;}