Pagini recente » Cod sursa (job #1136724) | Cod sursa (job #2107525) | Cod sursa (job #3280163) | Cod sursa (job #2801131) | Cod sursa (job #2777640)
#include <bits/stdc++.h>
#define MAXN 1000000
using namespace std;
ifstream fin ("zombie.in");
ofstream fout ("zombie.out");
int d, n, k;
int st, md, dr;
int v[MAXN+5], dp[MAXN+5];
long long suma[MAXN+5];
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=(dr-st)/2+st;
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
10 3
1 1 1
**/