Cod sursa(job #206215)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 5 septembrie 2008 13:17:05
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
# include <stdio.h>

# define FIN "energii.in"
# define FOUT "energii.out"
# define min(a,b) (a<b?a:b)
# define GMAX 1001
# define WMAX 5001
# define inf 10000000

int G,W,i,j,mn;
int EG[GMAX];
int CG[GMAX];
int D[WMAX<<1];

    int main()
    {
        freopen(FIN,"r",stdin);
        freopen(FOUT,"w",stdout);
        
        scanf("%d%d",&G,&W);
        for (i = 1; i <= G; ++i)
          scanf("%d%d",&EG[i],&CG[i]);
          
        for (i = 1; i <= W<<1; ++i)
          D[i] = inf;
          
        for (i = 1; i <= G; ++i)
          for (j = W<<1; j >= 1; --j)
            if (j - EG[i] >= 0)
              D[j] = min(D[j],D[j-EG[i]]+CG[i]);
            
        mn = inf;
        for (i = W; i <= W<<1; ++i)
          if (mn > D[i]) mn = D[i];
          
        if (mn == inf) printf("-1");
          else printf("%d",mn);
        
        return 0;
    }