Cod sursa(job #314872)

Utilizator mihaionlyMihai Jiplea mihaionly Data 13 mai 2009 13:46:49
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
typedef struct
 {
 float e,c;
 float p;
 } Centrala;
Centrala C[1001];
int g;
float s,w;
void read()
 {
 int i;
 fin>>g>>w;
 for(i=1;i<=g;i++)
  {
  fin>>C[i].e>>C[i].c;
  C[i].p=C[i].e/C[i].c;
  }
 }
void swap(Centrala &x,Centrala &y)
 {
 Centrala ax=x;
 x=y;
 y=ax;
 }
void qsort(int l,int r)
 {
 int i,j;
 j=l-1;
 for(i=l;i<=r;i++)
  if(C[i].p>=C[r].p)
   swap(C[i],C[++j]);
 if(l<j-1)
  qsort(l,j-1);
 if(r>j+1)
  qsort(j+1,r);
 }
void solve()
 {
 qsort(1,g);
 for(int i=1;i<=g;i++)
  {
  s+=C[i].c;
  w-=C[i].e;
  if(w<=0)
   {
   fout<<s;
   return;
   }
  }
 fout<<"-1";
 }
int main()
 {
 read();
 solve();
 return 0;
 }