Cod sursa(job #2105730)

Utilizator LeVladzCiuperceanu Vlad LeVladz Data 14 ianuarie 2018 00:45:17
Problema Zombie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>

using namespace std;

ifstream fin("zombie.in");
ofstream fout("zombie.out");

int d,n,k,i,v[1000001],moment[1000001],D[1000001];

int main()
{
    fin >> d >> n >> k;
    for (i=1; i<=n; i++)
        fin >> v[i];
    ///folosesc rasenshuriken cand primul zombie din linia de zombie
    ///pe care ii distrug este cat mai aproape posibil de mine
    ///deci momentul in care il folosesc este primul j, j <= i
    ///cu v[j]+d > v[i], ca v[i] sa fie pe strada
    int poz = 1;
    moment[1] = 1;
    for (i=2; i<=n; i++)
    {
        while (poz <= i && v[poz]+d <= v[i])
            poz++;
        moment[i] = poz;
    }
    ///D[i] = nr minim de chakra pentru a distruge i zombie
    for (i=1; i<=n; i++)
        D[i] = min(D[i-1]+1, D[moment[i]-1]+k);
    fout << D[n];
    return 0;
}