Cod sursa(job #804776)

Utilizator socheoSorodoc Ionut socheo Data 30 octombrie 2012 14:22:53
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <cstdio>

using namespace std;
int maxim, minim, n, g, e[1002], c[1002], sol[5002];
int ct = 100000, ct2 = 1000;
int main()
{
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);
    scanf("%d%d", &n, &g);
    for(int i = 1; i <= n; i++)
    {
        scanf("%d%d", &e[i], &c[i]);
    }
    int minim = ct;
    for(int i = 0; i <= g + ct2; i++)
        sol[i] = ct;

    for(int i = 1; i <= n; i++)
      {
        for(int j = g + ct2 - e[i]; j >= 0; j--)
            if(sol[j] != ct)
                if(sol[j + e[i]] > sol[j] + c[i])
                    sol[j + e[i]] = sol[j] + c[i];
        if(sol[e[i]] > c[i])
            sol[e[i]] = c[i];
      }
    for(int i = g; i <= g + ct2; i++)
        if(minim > sol[i] && sol[i] != -1)
            minim = sol[i];
    printf("%d", minim);
    return 0;
}