Cod sursa(job #1310728)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 7 ianuarie 2015 09:30:10
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
int n,w;
struct str
{
       int e;
       int g;
}it[1001];
int a[1001][5001];
int max(int a,int b)
{
    if(a<b) return b;
    return a;
}
int main()
{
    freopen ("energii.in","r",stdin);
    freopen ("energii.out","w",stdout);
    scanf("%d%d",&n,&w);
    int val=0;
    for(int i=1;i<=n;i++)
    {
            scanf("%d%d",&it[i].e,&it[i].g);
            if(val<it[i].g) val=it[i].g;
    }
    for(int i=1;i<=n;i++)
    {
            for(int j=it[i].g;j<=val;j++)
            {
                    a[i][j]=max(a[i-1][j],a[i-1][j-it[i].g]+it[i].e);       
            }
    }
    bool as=0;
    for(int i=1;i<=val;i++)
    {
            for(int j=1;j<=n;j++)
            {
                    if(a[j][i]>=w)
                    {
                                  printf("%d\n",i);
                                  as=1;
                                  break;
                    }
            }
            if(as==1) break;
    }
    return 0;
}