Pagini recente » Cod sursa (job #2055501) | Cod sursa (job #2876201) | Cod sursa (job #1679840) | Cod sursa (job #3135541) | Cod sursa (job #636930)
Cod sursa(job #636930)
Utilizator |
L 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]);
}