Pagini recente » Cod sursa (job #106885) | Cod sursa (job #3191170) | Cod sursa (job #3121418) | Cod sursa (job #1947019) | Cod sursa (job #637880)
Cod sursa(job #637880)
#include <stdio.h>
#define NMAX 1000001
int time[NMAX], cost[NMAX];
inline int min(int a, int b)
{
return (a < b) ? a : b;
}
int binary_search(int lo, int hi, int key)
{
int mid;
do {
mid = (lo + hi) >> 1;
if (key > time[mid])
lo = mid + 1;
else
hi = mid;
} while (lo < hi);
return hi;
}
int main()
{
freopen("zombie.in", "r", stdin);
freopen("zombie.out", "w", stdout);
int D, N, K, i;
scanf("%d %d %d", &D, &N, &K);
if (N == 1) {
printf("1\n");
return 0;
}
for (i = 1; i <= N; ++i) {
scanf("%d", &time[i]);
int pos = binary_search(1, i - 1, time[i] - D + 1);
if (pos < i && time[pos] >= time[i] - D + 1)
cost[i] = min(cost[i - 1] + 1, cost[pos - 1] + K);
else
cost[i] = cost[i - 1] + 1;
}
printf("%d\n", cost[N]);
return 0;
}