CCCPaste

Untitled

#include 

using namespace std;

long long n;
long long w;
vector>v;
long long dp[100005][105];

long long f(long long k, long long idx)
{
    if(k==0)
    {
        return 0;
    }
    if(idx==n)
    {
        return 1e16;
    }
    if(dp[k][idx]!=-1)
    {
        return dp[k][idx];
    }
    long long rez=1e16;
    if(k >= v[idx].second)
        rez=min(rez, f(k-v[idx].second,idx+1)+v[idx].first);///w
    rez=min(rez, f(k,idx+1));
    return dp[k][idx]=rez;
}

int main()
{
    cin>>n>>w;
    long long x,y;
    memset(dp,-1,sizeof dp);
    for(long long i=0;i>x>>y;
        v.push_back({x,y});
    }
    for(long long i=100000;i>=0;i--)
    {
        if(f(i,0)<=w)
        {
            cout<