Cod sursa(job #71222)

Utilizator M@2Te4iMatei Misarca M@2Te4i Data 9 iulie 2007 20:15:30
Problema Energii Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<string.h>
#define lmax 10002

long a[lmax],b[lmax],min,g,w,e,c,i,j;

int main()
{
freopen("energii.in","r",stdin);
memset(a,0,sizeof(a));    
scanf("%ld%ld", &g, &w);
scanf("%ld%ld", &e, &c);
a[e]=c;
for (i=2; i<=g; i++)
    {
    memset(b,-1,sizeof(0));
    scanf("%ld%ld", &e, &c);
    for (j=1; j<=lmax-e; j++)
        if (a[j]!=0)
           b[j+e]=a[j]+c;
    for (j=1; j<=lmax; j++)
        if (a[j]!=0 && a[j]<b[j] || b[j]==-1)
           b[j]=a[j];
    if (c<b[e] || b[e]==-1)
       b[e]=c;
    memcpy(a,b,sizeof(b));
    }
min=40000;
for (i=w; i<=lmax; i++)
    if (a[i]!=0 && a[i]<min)
       min=a[i];
fclose(stdin);
freopen("energii.out","w",stdout);
if (min!=40000)
   printf("%ld",min);
   else printf("-1");
fclose(stdout);
return 0;
}