Cod sursa(job #720571)

Utilizator simpleBereczki Cristian simple Data 22 martie 2012 19:09:38
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>
FILE *f=fopen("rucsac.in","r"),*gi=fopen("rucsac.out","w");
const int N=1002,GX=10001;
long long w[N],p[N];
long long DP[2][GX];
long long n,GMAX;
void citeste()
{long long i;
fscanf(f,"%lld%lld",&n,&GMAX);
for(i=1;i<=n;i++)
	{fscanf(f,"%lld%lld",&w[i],&p[i]);
	}
}
int main()
{long long i,g,k,k1;
citeste();
k=1;k1=1;
for(i=1;i<=n;i++)
	{for(g=0;g<=GMAX;g++)
		{DP[k][g]=DP[k-k1*1][g];
		if(w[i]<=g)	
			{if(DP[k][g]<DP[k-k1*1][g-w[i]]+p[i])
				{DP[k][g]=DP[k-k1*1][g-w[i]]+p[i];
				}
			}
		}
	if(k==1)
		{k=0;k1=-1;
		}
	else
		{k=1;k1=1;
		}
	}
if(k==0)
	{fprintf(gi,"%lld",DP[1][GMAX]);
	}
else
	{fprintf(gi,"%lld",DP[0][GMAX]);
	}
fclose(f);
fclose(gi);
return 0;
}