Pagini recente » Cod sursa (job #151804) | Cod sursa (job #2330072) | Cod sursa (job #268211) | Cod sursa (job #2688961) | Cod sursa (job #645788)
Cod sursa(job #645788)
#include <cstdio>
#define Nmax 1000001
int D, N, K;
int T[Nmax], Q[Nmax], st, dr;
long long A[Nmax];
int main()
{
freopen("zombie.in","r",stdin);
freopen("zombie.out","w",stdout);
scanf("%d %d %d", &D, &N, &K);
scanf("%d", &T[1]);
A[0] = 0;
A[1] = 1;
Q[st=dr=1] = 1;
for (int i=2; i<=N; ++i)
{
scanf("%d", &T[i]);
A[i] = A[i-1] + 1;
while (T[Q[st]] + D <= T[i] && st<=dr) ++st;
Q[++dr] = i;
while (dr>st && A[Q[dr]-1] <= A[Q[dr-1]-1])
Q[dr-1] = Q[dr--];
if (A[Q[st]-1] + K < A[i]) A[i] = A[Q[st]-1] + K;
}
printf("%lld\n", A[N]);
return 0;
}