Cod sursa(job #2071866)

Utilizator LusianoStan Lucian Mihai Lusiano Data 21 noiembrie 2017 09:06:16
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>

using namespace std;
ifstream f("rucsac.in");
ofstream go("rucsac.out");
int k,mmax=0,gr,s,j,mx=0,i,n,din[20001],c[10001],g[100001],use[1001][1001];
int main()
{f>>n>>gr;
for(i=1;i<=n;i++) f>>g[i]>>c[i];

din[0]=0;
for(i=1;i<=n;i++)
{
    for(j=mx;j>=0;j--){
     if(din[j+g[i]]<din[j]+c[i]&&j+g[i]<=gr&&(!j||din[j])){
        din[j+g[i]]=din[j]+c[i];
        for(k=1;k<=n;k++) use[j+g[i]][k]=use[j][k];
        use[j+g[i]][i]=1;
if(g[i]+j>mx) mx=g[i]+j;
     }


    }




}

for(i=0;i<=gr;i++) if(din[i]>mmax)mmax=din[i],mx=i;
go<<mmax<<'\n';
for(i=1;i<=n;i++)if(use[mx][i]==1) go<<i<<" ";
       return 0;
}