Cod sursa(job #1969780)

Utilizator 2016Teo@Balan 2016 Data 18 aprilie 2017 17:27:01
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
using namespace std;
ifstream fi ("energii.in");
ofstream fo ("energii.out");
int i,j,n,maxi,pt,g[5003],p[5003],lcur[20004],lpre[20004],mini;
int main()
{
    fi>>n>>pt;
    for (i=1; i<=n; i++)
    {
        fi>>p[i]>>g[i];
        maxi=max(maxi,g[i]);
    }
    mini=100000;
    for (i=1; i<=n; i++)
    {
        for (j=0; j<=pt+maxi; j++)
        {
            lcur[j]=lpre[j];
            if (g[i]<=j)
            {
                lcur[j]=max(lpre[j],lpre[j-g[i]]+p[i]);
            }
            if (lcur[j]>=pt and j<mini) mini=j;
        }
        for (j=0; j<=pt+maxi; j++)
        {
            lpre[j]=lcur[j];
            lcur[j]=0;
        }
    }
    if (mini==100000) mini=-1;
    fo<<mini;
    return 0;
}