Pagini recente » Cod sursa (job #1672274) | Cod sursa (job #1624149) | Cod sursa (job #3250524) | Cod sursa (job #179139) | Cod sursa (job #636827)
Cod sursa(job #636827)
#include <fstream>
#include <iostream>
using namespace std;
const int nmax = 1000010;
int A[nmax], B[nmax];
int bin(int v)
{
}
const int DIM = 1 << 13;
int poz = DIM - 1;
char buf[DIM];
int X;
inline int nr()
{
X = 0;
while(!isdigit(buf[poz]))
if(++poz == DIM)
fread(buf, sizeof(char), DIM, stdin), poz = 0;
while(isdigit(buf[poz]))
{
X = X * 10 + buf[poz] - '0';
if(++poz == DIM)
fread(buf, sizeof(char), DIM, stdin), poz = 0;
}
return X;
}
int main()
{
freopen ("zombie.in", "r", stdin);
freopen ("zombie.out", "w", stdout);
int D, N, K, i, ind, j;
D = nr();N = nr();K = nr();
for(i = 1; i <= N; i++)
A[i] = nr();
B[1] = 1;
for(i = 2; i <= N; i++)
{
B[i] = B[i - 1] + 1;
ind = 0;
for(j = 1; A[j] <= A[i] - D; j <<= 1);
for(j >>= 1; j > 0; j >>= 1)
if(A[j + ind] <= A[i] - D)
ind += j;
if(B[i] > B[ind] + K)
B[i] = B[ind] + K;
}
printf("%d\n", B[N]);
return 0;
}