Cod sursa(job #2854633)

Utilizator MihaiLazar26Lazar Mihai MihaiLazar26 Data 21 februarie 2022 15:55:31
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int dp[5010][10010];
int w[5010], p[5010];
int main()
{
    int n, g;
    fin>>n>>g;

    for(int i = 1; i <= n; i++){

        fin>>w[i]>>p[i];
        for(int j = 1; j <= g; j++){
            dp[i][j] = dp[i-1][j];
            if(j >= w[i]){
                dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]] + p[i]);
            }
        }
    }

    fout<<dp[n][g]<<"\n";

    for(int i = n; i != 0;){
        for(int j = g; j != 0;){
            while(dp[i][j] == dp[i-1][j]){
                i--;
            }
            fout<<i<<" ";
            j-=w[i];
            i--;
        }
    }
    return 0;
}