Cod sursa(job #2516256)

Utilizator Rares31100Popa Rares Rares31100 Data 30 decembrie 2019 20:23:21
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("rucsac.in");
ofstream out("rucsac.out");

int n,gFin,gMax,solMax;
pair <int,int> a[10001];
bitset <10001> viz;
int val[10001];

int main()
{
    in>>n>>gFin;

    for(int i=1;i<=n;i++)
        in>>a[i].first>>a[i].second;

    sort(a+1,a+n+1);

    viz[0]=1;
    for(int g,prf,i=1;i<=n;i++)
    {
        g=a[i].first;
        prf=a[i].second;

        for(int j=min(gFin-g,gMax);j>=0;j--)
            if(viz[j])
            {
                viz[j+g]=1;
                val[j+g]=max(val[j+g],val[j]+prf);
            }

        gMax=min(gMax+g,gFin);
    }

    for(int i=1;i<=gMax;i++)
        solMax=max(solMax,val[i]);

    out<<solMax;

    return 0;
}