Cod sursa(job #1682577)

Utilizator calin1Serban Calin calin1 Data 10 aprilie 2016 12:18:17
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

int g;

struct obiect
{
    int greutate,profit;
};

vector<obiect> v;

bool cmp(obiect x, obiect y)
{
    return(x.profit>y.profit);
}

void adunare()
{
    int actual=0;
    int de_afisat=0;
    for(int i=0; i<v.size(); i++)
    {
        actual+=v[i].greutate;
        if(actual>g)
        {
            break;
        }
        de_afisat+=v[i].profit;
    }
    printf("%d",de_afisat);
}

void citire()
{
    int nr;
    scanf("%d %d\n",&nr,&g);
    for(int i=0; i<nr; i++)
    {
        int x,y;
        scanf("%d %d\n",&x,&y);
        v.push_back(obiect());
        v[i].greutate=x;
        v[i].profit=y;
    }
    sort(v.begin(),v.end(),cmp);
    adunare();
}
int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    citire();
    return 0;
}