Pagini recente » Cod sursa (job #635650) | Cod sursa (job #2873422) | Cod sursa (job #1342102) | Cod sursa (job #2773699) | Cod sursa (job #635483)
Cod sursa(job #635483)
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAXN 1000010
int A[MAXN],DP[MAXN];
int i,st;
int D,N,K;
int cbin(int st, int L) {
int dr,m,rez;
dr=L; rez=L;
m=(st+dr)/2;
while(st<=dr) {
if(A[L]-A[m]+1<=D) {
rez=min(rez,m);
dr=m-1;
}
else
st=m+1;
m=(st+dr)/2;
}
return rez;
}
int main() {
freopen("zombie.in","r",stdin);
freopen("zombie.out","w",stdout);
scanf("%d %d %d",&D,&N,&K);
for(i=1;i<=N;i++)
scanf("%d",&A[i]);
st=1; DP[1]=1;
for(i=2;i<=N;i++) {
st=cbin(st,i);
DP[i]=min(DP[i-1]+1,DP[st-1]+K);
}
printf("%d",DP[N]);
}