Cod sursa(job #635752)
| Utilizator | Data | 19 noiembrie 2011 14:44:01 | |
|---|---|---|---|
| Problema | Zombie | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | .com 2011 | Marime | 0.51 kb |
#include <fstream>
using namespace std;
const int N=1000005;
int v[N],a[N],d[N],n,k,D;
ifstream in("zombie.in");
ofstream out("zombie.out");
inline int min(int a,int b)
{
return a<b ? a : b;
}
int main()
{
int i,j;
in>>D>>n>>k;
for (i=1;i<=n;i++)
in>>d[i];
for (i=j=1;i<=n;i++)
{
for(;j<=n && d[j]-d[i]<=D;j++);
a[i]=j-1;
}
v[n]=1;
for (i=n-1;i;i--)
v[i]=min(v[i+1]+1,v[a[i]+1]+k);
out<<v[1]<<"\n";
return 0;
}
