Cod sursa(job #395935)

Utilizator vicenzo_cnuStan Alexandru Dan vicenzo_cnu Data 14 februarie 2010 05:24:38
Problema Energii Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<stdio.h>
#define Gmax 1001
#define Nmax 5001
#define inf 11000

int main()
{freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
int g,w,e[Gmax],c[Gmax],v[Nmax];
scanf("%d %d",&g,&w);
int i;    
    for(i=1;i<=w;i++)
      v[i]=inf;
    for(i=1;i<=g;i++)
      scanf("%d %d",&e[i],&c[i]);
int j;
    for(i=1;i<=g;i++)
      {for(j=w;j>0;j--)
        if(v[j]!=0)
          if(j+e[i]>=w)
            {if(v[j]+c[i]<v[w])
              v[w]=v[j]+c[i];}
          else if(v[j+e[i]]>v[j]+c[i])
                  v[j+e[i]]=v[j]+c[i];
        if(e[i]>=w)
          {if(c[i]>v[w]) v[w]=c[i];}
        else if(v[e[i]]>c[i])
          v[e[i]]=c[i];
          }
  if(v[w]==inf)
    printf("-1\n");
    else printf("%d",v[w]);
  fclose(stdin);
  fclose(stdout);
  return 0;
  }