Cod sursa(job #636930)

Utilizator LgregL Greg Lgreg Data 20 noiembrie 2011 02:35:49
Problema Zombie Scor 0
Compilator cpp Status done
Runda .com 2011 Marime 0.87 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int din[1010100];
int v[1010100];
int D,N,cost;
int caut(int k,int l)
{
    int st=1;
    int dr=l;
    int mij;
    int ras=0;
    while(st<=dr)
    {
    mij=(st+dr)/2;

        if(v[mij]+D>=v[k])
        {
            ras=mij;
            dr=mij-1;
        }
        else st=mij+1;
    // printf("%d %d %d %d %d ",st,dr,mij,k,v[mij]+D);
    }
    //if(ras)
   // printf("%d\n",ras);
    return ras;
    //return l;
}
int main()
{
freopen("zombie.in","r",stdin);
freopen("zombie.out","w",stdout);
    scanf("%d%d%d",&D,&N,&cost);
    for(int i=1;i<=N;++i)
        scanf("%d",&v[i]);
    for(int i=1;i<=N;++i)
    {
     //  printf("%d\n",caut(v[i],i));
        din[i]=min(din[i-1]+1,din[caut(i,i)-1]+cost);
        //printf(" %d\n",caut(v[i],i));
    }
    printf("%d",din[N]);

}