Pagini recente » Cod sursa (job #2921015) | Cod sursa (job #1676778) | Borderou de evaluare (job #1591330) | Cod sursa (job #1477722) | Cod sursa (job #635889)
Cod sursa(job #635889)
#include<stdio.h>
#define NMAX 10
#define inf 0x3f3f3f3f
int A[NMAX],S[NMAX];
char str[NMAX];
inline int min( const int a, const int b )
{
return a<b?a:b;
}
inline int max( const int a, const int b )
{
return a>b?a:b;
}
int main()
{
freopen("zombie.in","r",stdin);
freopen("zombie.out","w",stdout);
int D,N,K;
scanf("%d%d%d\n",&D,&N,&K);
int i=1,j,val_=0;
while( fgets( str, NMAX, stdin ) != NULL )
{
for(j=0; j<NMAX && str[j]!='\0' && i<=N; ++j)
{
if( str[j]==' ' )
{
S[i]=inf;
A[i++]=val_;
val_=0;
}
else
{
val_*=10;
val_+=str[j]-'0';
}
}
}
A[i]=val_;S[i]=inf;
int p=1,val;
for(i=1; i<=N; ++i)
{
val=A[i];
S[i]=min(S[i],S[i-1]+1);
p=max(p,i+K);
while( A[p]-val <= D && p<=N )
S[p++]=S[i-1]+K;
}
printf("%d\n",S[N]);
return 0;
}