Cod sursa(job #635889)

Utilizator HakunaMatataA.A.A. HakunaMatata Data 19 noiembrie 2011 15:26:26
Problema Zombie Scor 0
Compilator cpp Status done
Runda .com 2011 Marime 0.86 kb
#include<stdio.h>

#define NMAX 10
#define inf 0x3f3f3f3f

int A[NMAX],S[NMAX];
char str[NMAX];

inline int min( const int a, const int b )
{
	return a<b?a:b;
}

inline int max( const int a, const int b )
{
	return a>b?a:b;
}

int main()
{
	freopen("zombie.in","r",stdin);
	freopen("zombie.out","w",stdout);

	int D,N,K;
	scanf("%d%d%d\n",&D,&N,&K);

	int i=1,j,val_=0;
	while( fgets( str, NMAX, stdin ) != NULL )
	{
		for(j=0; j<NMAX && str[j]!='\0' && i<=N; ++j)
		{
			if( str[j]==' ' )
			{
				S[i]=inf;
				A[i++]=val_;
				val_=0;
			}
			else
			{
				val_*=10;
				val_+=str[j]-'0';
			}
		}
	}
	
	A[i]=val_;S[i]=inf;

	int p=1,val;
	for(i=1; i<=N; ++i)
	{
		val=A[i];
		S[i]=min(S[i],S[i-1]+1);

		p=max(p,i+K);

		while( A[p]-val <= D && p<=N )
			S[p++]=S[i-1]+K;

	}

	printf("%d\n",S[N]);

	return 0;
}