Pagini recente » Cod sursa (job #635682) | Cod sursa (job #635694) | Cod sursa (job #2648073) | Cod sursa (job #635665) | Cod sursa (job #635425)
Cod sursa(job #635425)
#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)
c[i]=i;
for(i=1;i<=n;++i)
{
q.push_back(i);
if(a[i]-a[q.front()]>d)
{
c[i]=min(c[i],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;
}