Cod sursa(job #2699429)

Utilizator kywyPApescu tiGEriu kywy Data 24 ianuarie 2021 14:25:59
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
 
using namespace std;
 
ifstream in("rucsac.in");
ofstream out("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;
    in>>n>>w;
 
    while(in>>x>>y)
        v.push_back(make_pair(x, y));
 
    sort(v.begin(), v.end(), comp); 
 
    out<<max_profit();
}