Cod sursa(job #2390818)

Utilizator bogikanagyNagy Boglarka bogikanagy Data 28 martie 2019 13:02:33
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
//#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

#define kg first
#define ar second

vector < pair<int,int> > t;

vector <int> x;

int i,j,kg,n,g,maxi;

int main()
{
    cin>>n>>g;
    t.resize(n+1);
    for(i=1;i<=n;++i)
        cin>>t[i].kg>>t[i].ar;

    x.resize(g+1);


    x[t[1].kg]=t[1].ar;

    for(i=2;i<=n;++i)
    {
        kg=t[i].kg;
            for(j=g;j>=1;--j)
            {
                if(j+kg<=g)
                {
                    if(x[j]!=0)
                    {
                        if(x[j+kg]<x[j]+t[i].ar) x[j+kg]=x[j]+t[i].ar;
                        if(j==kg&&x[j]<t[i].ar) x[j]=t[i].ar;
                    }
                    else if(j==kg) x[j]=t[i].ar;
                }
            }
    }

    maxi=0;
    for(i=1;i<=g;++i)
        if(x[i]>maxi) maxi=x[i];

    cout<<maxi;
    return 0;
}