Cod sursa(job #1000296)

Utilizator toncuvasileToncu Vasile toncuvasile Data 22 septembrie 2013 16:40:33
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include<fstream>
using namespace std;

struct obiect{
   float greutate;
   float profit;
   float value;
};

float greutateMax;
int nrObiecte;
obiect A[5001],aux;

int main(){
   ifstream inFile("rucsac.in");
   ofstream outFile;
   outFile.open("rucsac.out");
   inFile>>nrObiecte>>greutateMax;
   for(int i=1;i<=nrObiecte;i++){
       inFile>>A[i].greutate>>A[i].profit;
       A[i].value=A[i].profit/A[i].greutate;
   }

   //Sortam tabloul
   bool t;
   do{
      t=false;
      for(int i=1;i<nrObiecte;i++)
         if(A[i].value<A[i+1].value){
            aux=A[i];
            A[i]=A[i+1];
            A[i+1]=aux;
            t=true;
         }
   } while(t);

/*  for(int i=1;i<=nrObiecte;i++) outFile<<A[i].profit<<" ";
  outFile<<endl;
  for(int i=1;i<=nrObiecte;i++) outFile<<A[i].value<<" ";
  outFile<<endl;
  for(int i=1;i<=nrObiecte;i++) outFile<<A[i].greutate<<" ";
*/

  float masa=0;
  float venit=0;
  int i=1;
  while(masa<greutateMax && i<=nrObiecte){
      if(masa+A[i].greutate<=greutateMax){
        masa=masa+A[i].greutate;
        venit=venit+A[i].profit;
        i++;
      }
      else i++;
  }
  outFile<<venit;

}