Cod sursa(job #2642957)

Utilizator HermioneMatei Hermina-Maria Hermione Data 17 august 2020 21:18:03
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, w;
vector<pair<int, int>> v;
vector<int> prv, crt;
int **a;

bool comp (pair<int, int> a, pair<int, int> b)
{
    return a.first<b.first;
}

int max_profit()
{
    prv.resize(w+1, 0);
    crt.resize(w+1, 0);
    int k=0;
    while(k<n)
    {
        for(int i=1; i<v[k].first; i++)
            crt[i]=prv[i];
        for(int i=v[k].first; i<=w; i++)
            crt[i]=max(prv[i], v[k].second+prv[i-v[k].first]);
        prv=crt;
        k++;
    }
    return prv[w];
}
int main()
{
    int x, y;
    f>>n>>w;

    /// x->weight
    /// y->profit
    while(f>>x>>y)
        v.push_back(make_pair(x, y));

    sort(v.begin(), v.end(), comp); /// sort vector in ascending oder by weight

    g<<max_profit();

    f.close();
    g.close();
    return 0;
}