Cod sursa(job #2156695)

Utilizator mateicosCostescu Matei mateicos Data 8 martie 2018 22:20:53
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#include <algorithm>

using namespace std;

struct kk{
  int m, g;
  float p;
}v[5005];

bool cmp(kk a, kk b){
  return a.p > b.p;
}

int main()
{
    freopen("rucsac.in", "r", stdin);
    freopen("rucsac.out", "w", stdout);
    int n, m, pr, g, i, s, nr;
    scanf("%d%d", &n, &m);
    for(i = 0;i < n;i++){
      scanf("%d%d", &g, &pr);
      v[i].g = g;
      v[i].m = pr;
      v[i].p = 1.0 * pr / g;
    }
    sort(v, v + n, cmp);
    s = 0;
    nr = 0;
    for(i = 0;i < n;i++){
      if(s + v[i].g < m){
        s += v[i].g;
        nr += v[i].m;
      }
    }
    printf("%d", nr);
    return 0;
}