Cod sursa(job #635437)

Utilizator PetcuIoanPetcu Ioan Vlad PetcuIoan Data 19 noiembrie 2011 11:36:10
Problema Zombie Scor 10
Compilator cpp Status done
Runda .com 2011 Marime 0.77 kb
#include<stdio.h>
#include<assert.h>
#include<deque>
#include<algorithm>
using namespace std;

deque<int> q;
int n,d,k,a[1000100],c[1000100];

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

void solve()
{
    int i;
    for(i=1;i<=n;++i)
    {
        q.push_back(i);
        if(a[i]-a[q.front()]>=d)
        {
            c[i]=min(c[i-1]+1,c[q.front()-1]+k+1);
            while(a[i]-a[q.front()]>=d)
                q.pop_front();
        }
        else
            c[i]=min(c[i-1]+1,c[q.front()-1]+k);
    }
}

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

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