Cod sursa(job #4299)

Utilizator cezar305Mr. Noname cezar305 Data 2 ianuarie 2007 15:34:25
Problema Energii Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream.h>
#include <iomanip.h>

fstream fin("energii.in",ios::in);
fstream fout("energii.out",ios::out);

long w,wt,ct,g,eg[1010],cg[1010],aux,i,j;

int main(){
  fin>>g>>w;
  for (i=1;i<=g;i++) {fin>>eg[i]>>cg[i];wt+=eg[i];ct+=cg[i];}
  if (wt<w) {fout<<-1;fin.close();fout.close();return 0;}
  //sortare in ordine descrescatoare a costului si la cost egal
  //in ordine descrescatoare a energiei debitate.
  for (i=1;i<g;i++)
    for (j=i+1;j<=g;j++)
      if ((cg[i]*eg[j]<cg[j]*eg[i])||(eg[j]*cg[i]==eg[i]*cg[j] && eg[i]<eg[j])){
        aux=eg[i];eg[i]=eg[j];eg[j]=aux;
        aux=cg[i];cg[i]=cg[j];cg[j]=aux;   
      }    
  for (i=1;i<=g;i++)
    if (wt-eg[i]>=w){ct-=cg[i];wt-=eg[i];}  
  fout<<ct;
  fin.close();fout.close();
return 0;
}