Cod sursa(job #635652)

Utilizator PetcuIoanPetcu Ioan Vlad PetcuIoan Data 19 noiembrie 2011 13:51:44
Problema Zombie Scor 100
Compilator cpp Status done
Runda .com 2011 Marime 1.13 kb
#include<stdio.h>
#include<assert.h>
#include<deque>
#include<algorithm>
using namespace std;

int d,n,k,a[1000001],c[1000001];
//deque<int> q;
//int n,d,k,sol,soll,solt;

void read()
{
    assert(freopen("zombie.in","r",stdin)!=NULL);
    int i;
    scanf("%d%d%d",&d,&n,&k);
    for(i=1;i<=n;++i)
        scanf("%d",&a[i]);
}

/*void readandsolve()
{
    assert(freopen("zombie.in","r",stdin)!=NULL);
    scanf("%d%d%d",&d,&n,&k);
    int i,x;
    for(i=1;i<=n;++i)
    {
        scanf("%d",&x);
        q.push_back(x);
        if(q.back()-q.front()>d)
        {
            sol=min(sol+1,soll+k+1);
            solt=soll;
            while(q.back()-q.front()>d)
            {
                q.pop_front();
                soll=min(soll+1,solt+k);
            }
        }
        else
            sol=min(sol+1,soll+k);
    }
}*/

void solve()
{
    int st=1,dr;
    for(dr=1;dr<=n;++dr)
    {
        while(a[dr]-a[st]>d)
            ++st;
        c[dr]=min(c[dr-1]+1,c[st-1]+k);
    }
}

void write()
{
    assert(freopen("zombie.out","w",stdout)!=NULL);
    printf("%d",c[n]);
}

int main()
{
    read();
    solve();
    write();
    return 0;
}