Cod sursa(job #2046061)

Utilizator ciocirlanrCiocirlan Robert ciocirlanr Data 23 octombrie 2017 12:58:53
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <iostream>
#include <algorithm>
using namespace std;
struct obiect {int G, V; double P;} v[1001];
int n, GMax, i;
float C=0;
void citire() {
  cin>>n>>GMax;
  for(i = 1; i <= n; ++i) {
    cin>>v[i].G>>v[i].V;
    v[i].P=(v[i].V)/v[i].G;
  }
}
bool comp(obiect a, obiect b) {
  return a.P > b.P;
}
void castig() {
  for(i = 1; i <= n && GMax>0; ++i) {
    if(v[i].G<=GMax) {
      C+=v[i].V;
      GMax-=v[i].G;
    } else {
      C+=v[i].P*GMax;
      GMax=0;
    }
  }
}
int main()
{
  citire();
  sort(v+1, v+n+1, comp);
  castig();
  cout<<C;
  return 0;
}