Pagini recente » Cod sursa (job #1326208) | Cod sursa (job #1138555) | Cod sursa (job #1144898) | Cod sursa (job #223771) | Cod sursa (job #638087)
Cod sursa(job #638087)
#include <iostream>
#include <cstdio>
using namespace std;
#define maxN 1000005
int A[maxN], minim[maxN];
int bin_Search (int x, int dist)
{
int st = 1, dr = x, mid;
if (x - dist - 1 >= 1) st = x - dist - 1;
int sol = maxN;
while (st <= dr)
{
mid = (st + dr) / 2;
if (A[x] - A[mid] > dist) st = mid + 1;
else
{
sol = min (sol, mid);
dr = mid - 1;
}
}
return sol;
}
int main()
{
freopen ("zombie.in", "r", stdin);
freopen ("zombie.out", "w", stdout);
int D, N, K;
scanf ("%d %d %d", &D, &N, &K);
for (int i = 1; i <= N; ++ i)
{
scanf ("%d", &A[i]);
int j = bin_Search (i, D - 1);
minim[i] = min (minim[i - 1] + 1, minim[j - 1] + K);
}
printf ("%d", minim[N]);
return 0;
}