Nu aveti permisiuni pentru a descarca fisierul grader_test7.in
Cod sursa(job #2822370)
| Utilizator | Data | 23 decembrie 2021 21:42:12 | |
|---|---|---|---|
| Problema | Zombie | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.83 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("zombie.in");
ofstream fout("zombie.out");
const int N = 1e6 + 1;
int v[N], dp[N], last[N];
// last[i] = index-ul primului zombie care va ataca daca am face o vraja de tip 2 la timpul zombie-ului i
// dp[i] = minimul de vraji pana la zombie-ul i
// dp[i] = min(dp[i - 1] + 1, dp[last[i] - 1] + k); ori aplicam vraja 1, ori vraja 2
// ^^^^ -1 ,fiindca inclusiv cel de la last[i] va fi eliminat
int main() {
int d, n, k;
fin >> d >> n >> k;
for (int i = 1; i <= n; i++) fin >> v[i];
int p = 1;
for (int i = 1; i <= n; i++) {
while (v[p] + d < v[i]) p++;
last[i] = p;
}
dp[1] = 1;
for (int i = 2; i <= n; i++)
dp[i] = min(dp[i - 1] + 1, dp[last[i] - 1] + k);
fout << dp[n];
return 0;
}
