Cod sursa(job #711549)

Utilizator danalex97Dan H Alexandru danalex97 Data 12 martie 2012 12:36:18
Problema Zombie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <fstream>
using namespace std;

#define Nmax 1000011
#define minim(a , b) ((a < b) ? a : b)
#define oo 2000000011

int bst[Nmax];
int kill[Nmax];
int A[Nmax];
int D,N,K;

int main()
{
	freopen("zombie.in","r",stdin);
	freopen("zombie.out","w",stdout);
	
	scanf("%d%d%d",&D,&N,&K);
	for (int i=1;i<=N;++i)
		scanf("%d",&A[i]);
	A[N+1]=oo;
	for (int i=1;i<=N;++i)
	{
		kill[i]=1;
		int poz=i+1;
		while (A[poz]-A[i]<D && poz<=N)
		{
			++kill[i];
			++poz;
		}
	}
	
	for (int i=N;i>0;--i)
		bst[i]=minim(bst[i+1]+1,bst[i+kill[i]]+K);
	
	printf("%d\n",bst[1]);
	
	return 0;
}