Pagini recente » Cod sursa (job #2514789) | Cod sursa (job #3147504) | Cod sursa (job #1904127) | Cod sursa (job #2573011) | Cod sursa (job #635430)
Cod sursa(job #635430)
#include<stdio.h>
#include<assert.h>
#include<deque>
#include<algorithm>
using namespace std;
deque<int> q;
int n,d,k,a[1000100],c[1000100];
void read()
{
assert(freopen("zombie.in","r",stdin)!=NULL);
scanf("%d%d%d",&d,&n,&k);
int i;
for(i=1;i<=n;++i)
scanf("%d",&a[i]);
}
void solve()
{
int i;
for(i=1;i<=n;++i)
{
q.push_back(i);
if(a[i]-a[q.front()]>d)
{
c[i]=min(c[i-1]+1,c[q.front()-1]+k+1);
while(a[i]-a[q.front()]>d)
q.pop_front();
}
else
c[i]=min(c[i-1]+1,c[q.front()-1]+k);
}
}
void write()
{
assert(freopen("zombie.out","w",stdout)!=NULL);
printf("%d",c[n]);
}
int main()
{
read();
solve();
write();
return 0;
}