Cod sursa(job #1459858)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 11 iulie 2015 00:26:17
Problema Zombie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#include <algorithm>
#define DIM 1000010
using namespace std;

int N, M, K, Dist;
int V[DIM], P[DIM],D[DIM];

inline int CautBin(int val, int i){

    int st = 1, dr = i, mid;

    while(st <= dr){

        mid = st + (dr - st) / 2;

        if(V[mid] < val)
            st = mid + 1;
        else
            dr = mid - 1;
    }

    return st;
}

int main(){

    freopen("zombie.in" ,"r", stdin );
    freopen("zombie.out","w", stdout);

    scanf("%d %d %d", &Dist, &N, &K);

    for(int i = 1; i <= N; i ++){

        scanf("%d", &V[i]);
        P[i] = CautBin(V[i] - Dist + 1, i);
    }

    for(int i = 1; i <= N; i ++)
        D[i] = min(D[i-1] + 1, D[P[i]-1] + K);

    printf("%d\n", D[N]);

    fclose(stdin );
    fclose(stdout);

    return 0;
}