Cod sursa(job #2630481)

Utilizator Eva_SavaEva Maria Birsan Eva_Sava Data 26 iunie 2020 10:12:30
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
#include <algorithm>
using namespace std;
const int GMAX=5000,INF=2000000000;
int d[GMAX+5];
struct CENTRALA
{
    int e,c;
};
CENTRALA v[1005];
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int n,gmax,minim,last,i,j;
    scanf("%d%d",&n,&gmax);
    for(i=1;i<=n;i++)
        scanf("%d%d",&v[i].e,&v[i].c);
    d[0]=0;
    last=0;
    minim=INF;
    for(i=1;i<=gmax;i++)
        d[i]=INF;;
    for(i=1;i<=n;i++)
    {
        for(j=last;j>=0;j--)
        {
            if(d[j]!=INF && j+v[i].e<=gmax && d[j+v[i].e]>d[j]+v[i].c)
                d[j+v[i].e]>d[j]+v[i].c;
            if(j+v[i].e>=gmax && d[j]!=INF && minim>d[j]+v[i].c)
                minim=d[j]+v[i].c;
        }
        last=min(last+v[i].c,gmax);
    }
    if(minim==INF)
        printf("-1");
    else
        printf("%d",minim);
    return 0;
}