Cod sursa(job #2843829)

Utilizator Vlad_NistorNIstor Vlad Vlad_Nistor Data 2 februarie 2022 23:42:54
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>
using namespace std;
int d[50002];
int p[50000];
int v[50000];
int n, suma, indiceMaximUnu, i, j, G, st;
int main () {
    ifstream cin ("rucsac.in");
    ofstream cout("rucsac.out");
    cin>>n >> G;
    for (i=1;i<=n;i++) {
        cin>>v[i] >> p[i];
    }
    d[0] = 0;
    for(i = 1;i<=G;i++){
        d[i] = -1;
    }
    indiceMaximUnu = 0;
    for (i=1;i<=n;i++) {
        /// am ajuns la v[i] si facem sume luandu-l in calcul si pe el
        for (j=indiceMaximUnu;j>=0;j--)
            if (d[j] != -1)
                if(j+v[i] <= G){
                    if(d[j+v[i]] < d[j] + p[i]){
                        d[j+v[i]] =d[j]+p[i];
                        indiceMaximUnu = max(indiceMaximUnu, j+v[i]);
                    }
                }
    }
 
    int ans = 0;
    for(i = 0;i<=G;i++){
        ans = max(ans, d[i]);
    }

    cout << ans;

    /// st va fi indiceMaximUnu
/// am    cout<<st
	
    return 0;
	
}