Cod sursa(job #2930751)

Utilizator MrPuzzleDespa Fabian Stefan MrPuzzle Data 29 octombrie 2022 14:57:13
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include<fstream>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<climits>
#include<iomanip>
#include<cstring>
#include<bitset>
using namespace std;

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

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

int n,G,x,p,indMax = 0,sol=0;
int d[10005];

int main(){

    f>>n>>G;

    for(int i=1;i<=G;i++){
        d[i] = -1;
    }
    d[0] = 0;

    for(int i=1;i<=n;i++){
        f>>x>>p;

        for(int j=indMax;j>=0;j--){
            if(d[j]!=-1){
                if(x+j<=G){
                    if(d[x+j] < d[j] + p){
                        d[x+j] = d[j] + p;
                        indMax = max(indMax,x+j);
                    }
                }
            }
        }

        /*cout<<i<<":"<<'\n';
        cout<<x<<" "<<p<<'\n'<<'\n';
        for(int i=1;i<=G;i++){
            cout<<i<<": "<<d[i]<<'\n';
        }
        cout<<'\n';
        cout<<"--------------------"<<'\n'<<'\n';*/
    }

    sol = 0;
    for(int i=1;i<=G;i++){
        sol = max(sol,d[i]);
    }

    g<<sol;

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