Cod sursa(job #1672194)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 2 aprilie 2016 14:13:30
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#define NM 1005
#define VAL 10000005

using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

int N, G, i, mn;
int c[NM], e[NM];
int dp[VAL], s, j;
bool ok[VAL];

int main()
{
    mn=2000000000;
    ok[0]=true;
    fin >> G >> N;
    for (i=1; i<=G; i++)
    {
        fin >> e[i] >> c[i];
        s+=e[i];
    }
    if (s<N)
      fout << -1 << '\n';
    else
    {
        for (i=1; i<=G; i++)
        {
            for (j=0; j<=s-e[i]; j++)
            {
                if (ok[j]==true)
                {
                    ok[j+e[i]]=true;
                    if (dp[j+e[i]]==0)
                      dp[j+e[i]]=dp[j]+c[i];
                    else
                      dp[j+e[i]]=min(dp[j]+c[i], dp[j+e[i]]);
                    if (j+e[i]>=N)
                      mn=min(mn, dp[j+e[i]]);
                }
            }
        }
        fout << mn << '\n';
    }
    fin.close();
    fout.close();
    return 0;
}