Cod sursa(job #1786716)

Utilizator silkMarin Dragos silk Data 23 octombrie 2016 15:21:23
Problema Zombie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>
#define NMax 1000005
#define MIN(a,b)((a)<(b)?(a):(b))

int best[NMax+1];
int idx[NMax+1];
int v[NMax+1];

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

    int i,j,k,D,N,K;

    scanf("%d %d %d",&D,&N,&K);
    for(i = 1; i <= N; ++i) scanf("%d",&v[i]);

    for(i = 1; i <= N; ++i) idx[i] = i;
    for(k = j = i = 1; i <= N; ++i)
    {
        while( v[j] <= v[i]+D-1 && j <= N ) ++j;
        --j;

        for(; k <= j; ++k) idx[k] = i;
    }

    for(i = 1; i <= N; ++i)
    best[i] = MIN( best[i-1] + 1, best[ idx[i] - 1 ] + K );

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



return 0;
}