Cod sursa(job #38269)

Utilizator razvi9Jurca Razvan razvi9 Data 25 martie 2007 16:54:21
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include<stdio.h>
int n,w,wmax,e,i,j,g,a[100001],s;
char viz[100001];
int main()
{freopen("energii.in","r",stdin);
 freopen("energii.out","w",stdout);
 scanf("%d %d",&n,&w);
 viz[0]=1;
 for(i=1;i<=n;i++)
 {scanf("%d %d",&e,&g);
  for(j=w;j>=0;j--)
   if(viz[j]&&(a[j+e]==0||a[j+e]>a[j]+g)) 
   {a[j+e]=a[j]+g;
    viz[j+e]=1;
    if(j+e>wmax&&wmax<20001) wmax=j+e;}}
 if(wmax<w) s=-1;
 else
 s=a[wmax];
 for(i=w;i<wmax;i++)
  if(viz[i]&&a[i]<s) s=a[i];]
 if(s<0) s=-1;
 printf("%d",s);
 fclose(stdout);
 return 0;}