Cod sursa(job #3353410)

Utilizator lucriLuchian Cristian lucri Data 7 mai 2026 10:17:59
Problema Problema rucsacului Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
std::ifstream cin("rucsac.in");
std::ofstream cout("rucsac.out");
long long n,max,v[5010],g[5010],sum[5010],ans;
void bkt(long long poz,long long sumg,long long sumv)
{
    ans=std::max(ans,sumv);
    if(poz>n||sumv+sum[poz]<=ans)
        return;
    if(sumg+g[poz]<=max)
        bkt(poz+1,sumg+g[poz],sumv+v[poz]);
    bkt(poz+1,sumg,sumv);
}
int main()
{
    cin>>n>>max;
    for(int i=1;i<=n;++i)
        cin>>g[i]>>v[i];
    for(int i=1;i<=n;++i)
        for(int j=1;j<n;++j)
        {
            if(v[j]<v[j+1])
            {
                std::swap(v[j],v[j+1]);
                std::swap(g[j],g[j+1]);
            }
        }
    for(int i=n;i>=1;--i)
        sum[i]=sum[i+1]+v[i];
    bkt(1,0,0);
    cout<<ans;
    return 0;
}