Cod sursa(job #640641)
| Utilizator | Data | 26 noiembrie 2011 11:11:39 | |
|---|---|---|---|
| Problema | Zombie | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.46 kb |
#include <stdio.h>
long d, n, k, h = 1, i, D[1000010], zt[1000010];
inline long min(long a, long b) {if (a > b) return b; return a;}
int main() {
freopen("zombie.in", "r", stdin);
freopen("zombie.out", "w", stdout);
scanf("%ld %ld %ld", &d, &n, &k);
for (i = 1; i <= n; ++i) scanf("%ld", &zt[i]);
for (i = 1; i <= n; ++i) {
while (zt[i] - d + 1 > zt[h]) ++h;
D[i] = min(D[h - 1] + k, D[i - 1] + 1);
}
printf("%ld\n", D[n]);
return 0;
}
