Cod sursa(job #635688)
#include <cstdio>
#include <fstream>
#include <algorithm>
using namespace std;
#define N 1000001
int bst[N],a[N],b[N],n,k,d;
void read ()
{
ifstream in ("zombie.in");
in>>d>>n>>k;
for(int i=1;i<=n;++i)
{
in>>a[i];
if(a[i]-a[i-1]>d)
b[i]=i-1;
else
if(a[i]-a[b[i-1]]>d)
b[i]=i-1;
else
b[i]=b[i-1];
}
}
void solve ()
{
bst[1]=1;
for(int i=2;i<=n;++i)
bst[i]=min(bst[i-1]+1,bst[b[i]-1]+k);
}
void out ()
{
freopen ("zombie.out","w",stdout);
printf("%d",bst[n]);
}
int main ()
{
read ();
solve ();
out ();
return 0;
}