Cod sursa(job #317421)

Utilizator hasegandaniHasegan Daniel hasegandani Data 23 mai 2009 16:13:16
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>

#define nmax 10001
#define tmax 5001

int n,t;
int e[nmax],c[nmax],ns[tmax];

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d",&n);
    scanf("%d",&t);
    
    for(int i=1;i<=t;++i)
        ns[i]=-1;
    
    for(int i=1;i<=n;++i)
        {
		scanf("%d%d",&e[i],&c[i]);

		for(int j=t-1;j;--j)
			if (ns[j]>0)
				if (j+e[i]<=t)
					if (ns[j+e[i]]==-1 || ns[j+e[i]]>ns[j]+c[i])
						ns[j+e[i]]=ns[j]+c[i];
					else ;
				else
					if (ns[t]==-1 || ns[t]>ns[j]+c[i])
						ns[t]=ns[j]+c[i];
					else ;
        
        if (e[i]<=t)
            if (ns[e[i]]==-1 || ns[e[i]]>c[i])
                ns[e[i]]=c[i];
            else ;
        else
            if (ns[t]==-1 || ns[t]>c[i])
				ns[t]=c[i];
		}
		
    printf("%d\n",ns[t]);
    return 0;
}