Cod sursa(job #637848)

Utilizator otilia_sOtilia Stretcu otilia_s Data 20 noiembrie 2011 17:09:14
Problema Zombie Scor 100
Compilator cpp Status done
Runda .com 2011 Marime 0.65 kb
#include <fstream>
using namespace std;
#define NMAX 1000004
int z[NMAX],cz[NMAX];

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

int binsearch(int st, int dr, int key)
{
	int m;
	do
	{
		m=(st+dr)>>1;
		if (key>z[m]) st=m+1;
			else dr=m;
	}
	while (st<dr);
	return dr;
}

int main()
{
	int D,n,k,i,poz;
	ifstream fin("zombie.in");
	fin>>D>>n>>k;
	
	cz[0]=0;
	fin>>z[1]; cz[1]=1;
	for (i=2;i<=n;++i)
	{
		fin>>z[i];
		poz=binsearch(1,i-1,z[i]-D+1);
		if (poz<i && z[poz]>=z[i]-D+1)
			cz[i]=min(cz[i-1]+1,cz[poz-1]+k);
		else cz[i]=cz[i-1]+1;
	}
	
	ofstream fout("zombie.out");
	fout<<cz[n]<<"\n";
	return 0;
}