Cod sursa(job #1708389)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 26 mai 2016 23:27:24
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<cstdio>
#define Inf 1000000000
using namespace std;
int BEST[5050];
typedef struct tip
{
    int E,C;
};
int n,w;
tip v[1005];
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d%d",&n,&w);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&v[i].E,&v[i].C);
    }
    for(int i=1;i<=w;i++)
    {
        BEST[i]=Inf;
    }
    BEST[0]=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=0;j<=w;j++)
        {
            if(BEST[j]!=Inf)
            {
                if ((j+v[i].E)<w)
                {
                    if (BEST[j+v[i].E]>(BEST[j]+v[i].C))
                    {
                        BEST[j+v[i].E]=(BEST[j]+v[i].C);
                    }
                }
                    else
                {
                    if (BEST[w]>(BEST[j]+v[i].C))
                    {
                        BEST[w]=(BEST[j]+v[i].C);
                    }
                }
            }
        }
    }
    if (BEST[w]==Inf) printf("-1\n");
        else printf("%d\n",BEST[w]);
        return 0;
}