Cod sursa(job #317036)

Utilizator hasegandaniHasegan Daniel hasegandani Data 22 mai 2009 10:06:35
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 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<=n;++i)
        {
		scanf("%d%d",&e[i],&c[i]);

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