Cod sursa(job #1708373)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 26 mai 2016 22:57:54
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int g,n,e[1005],c[1005],v[5005],minim=999999999,energie,s;
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d",&n);
    scanf("%d",&g);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&e[i],&c[i]);
        s+=e[i];
    }
    if (s<g)
    {
        printf("-1\n");
        return 0;
    }
    v[0]=0;
    for(int i=1;i<=g;i++) v[i]=-1;
    int maxim=0;
    for(int i=0;i<g;i++)
    {
        if(v[i]!=(-1))
        {
            for(int j=1;j<=n;j++)
            {
                if ((i+e[j])<g && (v[i+e[j]]==(-1) || ((v[i]+c[j])<v[i+e[j]])))
                {
                    v[i+e[j]]=(v[i]+c[j]);
                   // if((i+e[j])>maxim) maxim=(i+e[j]);
                }
                 else
                if((i+e[j])>=g)
                {
                    if ((v[i]+c[j])<minim)
                    {
                        minim=(v[i]+c[j]);
                    }
                }
            }
        }
    }
    printf("%d\n",minim);
    return 0;
}