Cod sursa(job #638004)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 20 noiembrie 2011 18:06:57
Problema Zombie Scor 0
Compilator cpp Status done
Runda .com 2011 Marime 0.62 kb
#include <cstdio>
#include <fstream>

#define MAXN 1000010
using namespace std;

long long sol;
int D, N, K, A[MAXN], dp[MAXN];
inline int min(int a, int b) {
	if(a < b) return a;
	return b;
}
int main() {

//	freopen("zombie.in", "r", stdin);
//	freopen("zombie.out", "w", stdout);
	ifstream fin("zombie.in");
	ofstream fout("zombie.out");

	fin >> D >> N >> K;

	for(int i = 1; i <= N; i++)
		fin >> A[i];
	dp[N] = 1;
	int act, antact;
	act = N;
	for(int i = N - 1; i >= 1; i--) {
		antact = act;
		while(A[act] - A[i] > D) --act;
		dp[i] = min(dp[antact] + K, dp[antact] + antact - act + 1);
	}
	fout << dp[1] << "\n";
	return 0;
}