Pagini recente » Cod sursa (job #3221313) | Cod sursa (job #552299) | Cod sursa (job #109163) | Cod sursa (job #2091970) | Cod sursa (job #635500)
Cod sursa(job #635500)
#include<stdio.h>
#include<assert.h>
#include<deque>
using namespace std;
deque<int> q;
int n,d,k,sol,soll,solt;
inline int min(int x,int y)
{
if(x<y)
return x;
return y;
}
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 i;
for(i=1;i<=n;++i)
{
q.push_back(i);
if(a[i]-a[q.front()]>=d)
{
sol=min(sol+1,soll+k+1);
solt=soll;
while(a[i]-a[q.front()]>=d)
{
q.pop_front();
soll=min(soll+1,solt+k);
}
}
else
sol=min(sol+1,soll+k);
}
}*/
void write()
{
assert(freopen("zombie.out","w",stdout)!=NULL);
if(k==0)
printf("0");
else
printf("%d",sol);
}
int main()
{
readandsolve();
write();
return 0;
}