Cod sursa(job #1672219)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 2 aprilie 2016 14:33:44
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <bitset>
#include <cstdio>
#define NM 1005
#define VAL 10000005

using namespace std;

int N, G, i, mn;
int c, e;
int dp[VAL], s, j;
bitset<VAL> ok;

int main()
{
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);
    mn=2000000000;
    ok[0]=1;
    scanf("%d %d", &G, &N);
    for (i=1; i<=G; i++)
    {
        scanf("%d %d", &e, &c);
        s+=e;
        for (j=s-e; j>=0; j--)
        {
            if (ok[j]==1)
            {
                ok[j+e]=1;
                if (dp[j+e]==0)
                  dp[j+e]=dp[j]+c;
                else
                  dp[j+e]=min(dp[j]+c, dp[j+e]);
                if (j+e>=N)
                  mn=min(mn, dp[j+e]);
            }
        }
    }
    if (s<N)
      printf("%d\n", -1);
    else
      printf("%d\n", mn);
    return 0;
}