Cod sursa(job #636793)

Utilizator AndrewTheGreatAndrei Alexandrescu AndrewTheGreat Data 19 noiembrie 2011 23:50:24
Problema Zombie Scor 30
Compilator cpp Status done
Runda .com 2011 Marime 0.68 kb
#include <fstream>
#include <iostream>

using namespace std;

const int nmax = 1000010;
int A[nmax], B[nmax];

int bin(int v)
{
    int i, x = 0;
    for(i = 1; A[i] <= v; i <<= 1);
    for(i >>= 1; i > 0; i >>= 1)
        if(A[i + x] <= v)
            x += i;
    return x;
}

int main()
{
    ifstream in ("zombie.in");
    ofstream out("zombie.out");


    int D, N, K, i, ind;
    in >> D >> N >> K;
    for(i = 1; i <= N; i++)
        in >> A[i];

    B[1] = 1;
    for(i = 2; i <= N; i++)
    {
        B[i] = B[i - 1] + 1;
        ind = bin(A[i] - D);
        if(B[i] > B[ind] + K)
            B[i] = B[ind] + K;
    }

    out << B[N];
    return 0;
}