Cod sursa(job #3330458)

Utilizator Ilinca_Radu_2022Radu Ilinca-Rucsandra Ilinca_Radu_2022 Data 19 decembrie 2025 17:18:04
Problema Problema rucsacului Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>
#define fi second
#define se first
#define MAXN 5005
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n, k, suf[MAXN], ans=0, sum=0, val=0;
pair<int, int>x[MAXN];
void bkt(int i);
int main()
{
    fin>>n>>k;
    for (int i=1; i<=n; i++) {
        fin>>x[i].fi>>x[i].se;
    }
    sort(x+1, x+n+1, greater<pair<int, int>>());
    for (int i=n; i>=1; i--) suf[i]=suf[i+1]+x[i].se;
    bkt(1);
    fout<<ans;
    return 0;
}
void bkt(int i) {
    if (sum>k) return ;
    if (val+suf[i]<ans) return ;
    if (i>n) {
        ans=max(ans, val);
        return ;
    }
    sum+=x[i].fi;
    val+=x[i].se;
    bkt(i+1);
    sum-=x[i].fi;
    val-=x[i].se;
    bkt(i+1);
}