Cod sursa(job #2116296)

Utilizator SahMatCodrea Andrei SahMat Data 27 ianuarie 2018 14:43:52
Problema Problema rucsacului Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;
ifstream fi("rucsac.in");
ofstream fo("rucsac.out");
int n,g;
int a[5001],b[10001];
int dp[5001][10001];
int i,j,w,p,k,cnt,o;
int main()
{
  fi>>n>>g;
    for(i=1;i<=n;i++)
  {
      fi>>w>>p;
      a[++o]=w;
      b[o]=p;
  }
  for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
  {
      if(a[i]<a[j])
      {swap(a[i],a[j]);
        swap(b[i],b[j]);
      }

  }
   for(i=0;i<=n+1;i++)
    for(j=0;j<=g+1;j++)
   {   if(i==1)
       if(a[i]<=j)
        dp[i][j]=b[i];

       if(i>1)
{   if(a[i]<=j)
    dp[i][j]=max(dp[i-1][j],b[i]+dp[i-1][j-a[i]]);
    else
    dp[i][j]=dp[i-1][j];
}
   }
       fo<<dp[n][g];
//       fo<<endl;
//          for(i=0;i<=n+1;i++)
//    {for(j=0;j<=g+1;j++)
//    fo<<dp[i][j]<<" ";
//    fo<<endl;
//    }

    return 0;
}