Cod sursa(job #612050)

Utilizator UgleaEduFMI - Edward UgleaEdu Data 5 septembrie 2011 16:05:31
Problema Energii Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;
long int nr[1001];
long double raport[1001];
void sort(int i , int j , int n)
{
 double aux;    
 if( raport[i] < raport[j] )
  {
   aux = raport[i];
   raport[i] = raport [j] ;
   raport[j] = aux ;
   aux = nr[i];
   nr[i] = nr[j];
   nr[j] = aux;
  }
 if( i < n)
 { 
  if( j == n )
   sort( i + 1 , i + 2 , n );
  else
   sort( i  , j + 1 , n);
 }
}      
int main()
{
 int g , need , i , j , cost = 0 , v[ 1001 ] ;
 fstream f("energii.in",ios::in);
 fstream z("energii.out",ios::out);
 f>>g ;
 f>>need;
 for( i = 1 ; i <= 2 * g ; i ++ )
  f>>v[ i ] ;
 for( j = 1 ; j <= g ; j++ )
  raport[j] =(float) v[j * 2 - 1] / v[ j * 2 ] ;

 for( j = 1 ; j <= g ; j++ )
  nr[j] = j;
 sort(1 , 2 , g);
 for( i = 1 ; i < g*2 ; i++ )
 {
   if( need > 0 )
    {
     need -= v[nr[i ]*2 - 1] ;       
     cost += v[nr[i ]*2 ];
    }   
   else
    i = g*2;
 } 
 if(need > 0)
  z<<"-1";
 else 
  z<<cost;
  f.close();
  z.close();   
    return 0;
}