Pagini recente » Cod sursa (job #742719) | Cod sursa (job #2500744) | Cod sursa (job #321796) | Cod sursa (job #1828084) | Cod sursa (job #635732)
Cod sursa(job #635732)
using namespace std;
#include<fstream>
#include<deque>
#define ll long long
const int MAX_N = 100007;
int N, K, D;
ll dp[MAX_N];
int T[MAX_N];
deque<int>Q;
int main()
{
ifstream in("zombie.in"); ofstream out("zombie.out");
in >> D >> N >> K;
int i, j;
for(i = 1; i <= N; ++i) in >> T[i];
dp[0] = 0;
for(i = 1; i <= N; ++i)
{
while( !Q.empty() && T[i] - T[ Q.front() ] >= D ) Q.pop_front();
if( Q.empty() ) j = i - 1;
else j = Q.front();
dp[i] = min( 1 + dp[i-1], (j>0)?1LL*(K + dp[j - 1]):1+dp[i-1] );
while( !Q.empty() && dp[i] <= dp[ Q.back() ] ) Q.pop_back();
Q.push_back( i );
}
out << dp[N] << "\n";
return 0;
}