Cod sursa(job #1654605)

Utilizator george_stelianChichirim George george_stelian Data 17 martie 2016 11:56:13
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

struct str
{
    int g,p;
    bool operator <(const str &aux) const
    {
        if(g==0 && aux.g==0) return p>aux.p;
        else if(p*aux.g==aux.p*g) return p>aux.p;
        else return p*aux.g>aux.p*g;
    }
}v[5010];

int main()
{
    freopen("rucsac.in", "r", stdin);
    freopen("rucsac.out", "w", stdout);
    int n,m,sol=0;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++) scanf("%d%d",&v[i].g,&v[i].p);
    sort(v+1,v+1+n);
    for(int i=1;i<=n;i++)
        if(m>=v[i].g) {m-=v[i].g;sol+=v[i].p;}
    printf("%d",sol);
    return 0;
}