Cod sursa(job #2223198)

Utilizator maria_neagoieMaria Neagoie maria_neagoie Data 19 iulie 2018 12:49:47
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int d[10005],w[5005],p[5005];
int main()
{
  freopen("rucsac.in","r",stdin);
  freopen("rucsac.out","w",stdout);
  int n,g,i,j,last=0,maxim=-1;
  scanf("%d%d",&n,&g);
  for(i=1;i<=g;i++)
    d[i]=-1;
  for(i=1;i<=n;i++)
  {
    scanf("%d%d",&w[i],&p[i]);
    for(j=last;j>=0;j--)
    {
      if(j+w[i]<=g)
      {
        if(d[j]!=-1)
          d[j+w[i]]=max(d[j+w[i]],d[j]+p[i]);
        if(j+w[i]>last)
          last=j+w[i];
      }
    }
  }
  for(i=1;i<=g;i++)
    maxim=max(maxim,d[i]);
  printf("%d",maxim);
    return 0;
}