Pagini recente » Cod sursa (job #2705243) | Cod sursa (job #3147502) | Cod sursa (job #3146982) | Cod sursa (job #635494) | Cod sursa (job #635657)
Cod sursa(job #635657)
#include <cstdio>
#define nmax 1000010
long long d[nmax];
int x, n, k, v[nmax];
long long min(long long a, long long b)
{
if (a>b) a=b;
return a;
}
int max(int a, int b)
{
if (a<b) a=b;
return a;
}
int search(int a, int b, int val)
{
int m, r=0;
while (a<=b)
{
m=(a+b)/2;
if (v[m]<val)
{
r=m;
a=m+1;
} else b=m-1;
}
return r;
}
int main()
{
freopen("zombie.in","r",stdin);
freopen("zombie.out","w",stdout);
scanf("%d %d %d",&x, &n, &k);
int i, p;
for (i=1; i<=n; i++) scanf("%d", &v[i]);
for (i=1; i<=n; i++)
{
p=search(1, i, max(0, v[i]-x));
d[i]=min(d[p]+k, d[i-1]+1);
}
printf("%lld\n",d[n]);
}