Pagini recente » Cod sursa (job #3189747) | Cod sursa (job #2401880) | Cod sursa (job #613380) | Cod sursa (job #1704372) | Cod sursa (job #637895)
Cod sursa(job #637895)
#include <fstream>
using namespace std;
#define NMAX 1000002
int time[NMAX], cost[NMAX];
inline int min(int a, int b)
{
return (a < b) ? a : b;
}
int binary_search(int lo, int hi, int key)
{
int mid;
do {
mid = (lo + hi) >> 1;
if (key > time[mid])
lo = mid + 1;
else
hi = mid;
} while (lo < hi);
return hi;
}
int main()
{
ifstream fin("zombie.in");
ofstream fout("zombie.out");
int D, N, K, i;
fin >> D >> N >> K;
if (N == 1) {
printf("1\n");
return 0;
}
for (i = 1; i <= N; ++i) {
fin >> time[i];
int pos = binary_search(1, i - 1, time[i] - D + 1);
if (pos < i && time[pos] >= time[i] - D + 1)
cost[i] = min(cost[i - 1] + 1, cost[pos - 1] + K);
else
cost[i] = cost[i - 1] + 1;
}
fout << cost[N];
return 0;
}