Cod sursa(job #1579817)

Utilizator cicero23catalin viorel cicero23 Data 25 ianuarie 2016 09:18:53
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
struct ob
{
    int pret,kg;
};
int comp(ob a,ob b)
{
if(a.pret*b.kg==b.pret*a.kg)
        return (a.pret>b.pret);
if((float)a.pret/a.kg-(float)b.pret/b.kg<1) return (a.pret>b.pret);
    return (a.pret*b.kg>b.pret*a.kg);
}
int n,G,i,s;
ob v[5001];
int main()
{

    f>>n>>G;
    for(i=1;i<=n;i++)
    {
        f>>v[i].kg;
        f>>v[i].pret;
    }
    sort(v+1,v+n+1,comp);

    s=0;
    i=1;
    while(i<=n&&G>0)
    {
        if(v[i].kg<=G){s+=v[i].pret;G-=v[i].kg;}
        else break;
        i++;
    }
    g<<s;
    return 0;
}