Cod sursa(job #1958238)

Utilizator ardutgamerAndrei Bancila ardutgamer Data 8 aprilie 2017 10:30:52
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#include <cstring>

using namespace std;
int d[10005];
int myma(int a,int b)
{
  if(a > b)
    return a;
  return b;
}
int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    int n , g , p , cw , G;
    scanf("%d%d",&n,&G);
    memset(d,-1,sizeof(d));
    d[0] = 0;
    int last = 0;
    for(int i = 1 ; i <= n ; i++)
    {
        scanf("%d%d",&g,&p);
        for(int j = last ; j >= 0 ; j--)
        {
            if(j + g <= G)
            {
                if(d[j] + p > d[j+g])
                {
                    d[j+g] = d[j] + p;
                    if(j + g > last)
                      last = j + g;
                }
            }
        }
    }
    int ma = 0;
    for(int i = 0 ; i <= last ; i++)
      if(d[i] > ma)
        ma = d[i];
    printf("%d",ma);
    return 0;
}