Cod sursa(job #635445)

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

deque<int> q;
int n,d,k,sol,soll,solt,a[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)
        {
            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()
{
    read();
    solve();
    write();
    return 0;
}