Pagini recente » Cod sursa (job #131888) | Cod sursa (job #1303064) | Cod sursa (job #2281006) | Cod sursa (job #1729189) | Cod sursa (job #637852)
Cod sursa(job #637852)
#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 val, int high)
{
int lo = 1, hi = high;
int mid, pos = high;
while (lo <= hi) {
mid = lo + (hi - lo) / 2;
if (time[mid] >= val) {
pos = mid;
hi = mid - 1;
}
else
lo = mid + 1;
}
return pos;
}
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]);
for (i = 1; i <= N; ++i) {
int pos = binary_search(time[i] - D + 1, i);
cost[i] = min(cost[i - 1] + 1, cost[pos - 1] + K);
}
printf("%d\n", cost[N]);
return 0;
}