Cod sursa(job #635460)

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

deque<int> q;
int n,d,k,sol,soll,solt;

inline int min(int x,int y)
{
    if(x<y)
        return x;
    return y;
}

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 i;
    for(i=1;i<=n;++i)
    {
        q.push_back(i);
        if(a[i]-a[q.front()]>=d)
        {
            sol=min(sol+1,soll+k+1);
            solt=soll;
            while(a[i]-a[q.front()]>=d)
            {
                q.pop_front();
                soll=min(soll+1,solt+k);
            }
        }
        else
            sol=min(sol+1,soll+k);
    }
}*/

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

int main()
{
    readandsolve();
    write();
    return 0;
}