Cod sursa(job #1842184)

Utilizator UrsuDanUrsu Dan UrsuDan Data 6 ianuarie 2017 17:08:30
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <cstdio>
#define inf 50000050

using namespace std;

struct energii
{
    int e,c;
};
energii v[1005];
int eng[1000050];

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int n,m,i,j,cmax=0,engmax=0,mini=inf;
    scanf("%d%d",&n,&m);
    for(i=1; i<=n; i++)
    {
        scanf("%d%d",&v[i].e,&v[i].c);
        cmax+=v[i].c;
        engmax+=v[i].e;
    }
    if(engmax<m)
        printf("-1");
    else
    {
        for(i=1; i<=n; i++)
        {
            for(j=cmax; j>=v[i].c; j--)
            {
                if( eng[j]<eng[j-v[i].c]+v[i].e)
                {
                    eng[j]=eng[j-v[i].c]+v[i].e;
                    if(eng[j]>=m)
                        cmax=j;
                }
            }
        }
        printf("%d",cmax);
    }
    return 0;
}