Cod sursa(job #1768049)

Utilizator cyg_ieeuVasile Radu-Andrei cyg_ieeu Data 30 septembrie 2016 08:48:58
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
#include <algorithm>

using namespace std;
struct rucsac
{
    int g,p;
};

rucsac v[5005];

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