Pagini recente » Cod sursa (job #2453682) | Cod sursa (job #555904) | Cod sursa (job #2420647) | Cod sursa (job #2339584) | Cod sursa (job #635652)
Cod sursa(job #635652)
#include<stdio.h>
#include<assert.h>
#include<deque>
#include<algorithm>
using namespace std;
int d,n,k,a[1000001],c[1000001];
//deque<int> q;
//int n,d,k,sol,soll,solt;
void read()
{
assert(freopen("zombie.in","r",stdin)!=NULL);
int i;
scanf("%d%d%d",&d,&n,&k);
for(i=1;i<=n;++i)
scanf("%d",&a[i]);
}
/*void readandsolve()
{
assert(freopen("zombie.in","r",stdin)!=NULL);
scanf("%d%d%d",&d,&n,&k);
int i,x;
for(i=1;i<=n;++i)
{
scanf("%d",&x);
q.push_back(x);
if(q.back()-q.front()>d)
{
sol=min(sol+1,soll+k+1);
solt=soll;
while(q.back()-q.front()>d)
{
q.pop_front();
soll=min(soll+1,solt+k);
}
}
else
sol=min(sol+1,soll+k);
}
}*/
void solve()
{
int st=1,dr;
for(dr=1;dr<=n;++dr)
{
while(a[dr]-a[st]>d)
++st;
c[dr]=min(c[dr-1]+1,c[st-1]+k);
}
}
void write()
{
assert(freopen("zombie.out","w",stdout)!=NULL);
printf("%d",c[n]);
}
int main()
{
read();
solve();
write();
return 0;
}