Pagini recente » Cod sursa (job #2849707) | Cod sursa (job #2873358) | Cod sursa (job #1349039) | Cod sursa (job #3280165) | Cod sursa (job #2777626)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("zombie.in");
ofstream fout ("zombie.out");
int d, n, k;
int st, md, dr;
int v[1000005], suma[1000005];
int dp[1000005];
int main (){
fin>>d>>n>>k;
for(int i=1; i<=n; i++)
fin>>v[i];
for(int i=1; i<n; i++){
v[i] = v[i+1] - v[i];
suma[i] = suma[i-1] + v[i];
}
n--;
dp[1]=1;
for(int i=2; i<=n; i++){
dp[i]=dp[i-1]+1;
st=1;
dr=i;
while(st <= dr){
md=(st+dr)/2;
if(suma[i] - suma[md-1] <= d){
dp[i]=min(dp[i], dp[md-1] + k);
st=md+1;
}else
dr=md-1;
}
}
fout<<dp[n];
return 0;
}
/**
5 5 2
1 10 11 12 13
9 1 1 1
1 2 3 3
**/