Cod sursa(job #3233166)

Utilizator IustaganIusin Dabu Iustagan Data 2 iunie 2024 18:07:07
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");

struct obj{int g,pr;};

bool cmp(obj o1,obj o2)
{
    return (o1.pr>o2.pr);
}

int main()
{
    long long int n,G;
    cin>>n>>G;
    obj v[5001];

    for(int i=1;i<=n;i++)
        cin>>v[i].g>>v[i].pr;

    sort(v+1,v+n+1,cmp);

    for(int i=1;i<n;i++)
        for(int j=i+1;j<=n;j++)
            if(v[i].pr==v[j].pr)
                if(v[i].g>v[j].g)
                    swap(v[i],v[j]);

    int S=0,P=0,i=1;

    while(S<G&&i<=n)
    {
        if(S+v[i].g<=G)
            S+=v[i].g;
        P+=v[i].pr;
        i++;
    }
    cout<<P;
}