Cod sursa(job #639033)
| Utilizator | Data | 22 noiembrie 2011 10:43:57 | |
|---|---|---|---|
| Problema | Zombie | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.44 kb |
#include <fstream>
#include <algorithm>
#define min(a,b) ((a<b)?a:b)
using namespace std;
int x[1000001],up,i,d,n,k,u,D[1000001];
int main()
{
ifstream fi("zombie.in");
ofstream fo("zombie.out");
fi>>d>>n>>k;
for(i=1;i<=n;i++)
{
fi>>x[i];
up=max(x[i]-d+1,0);
u=upper_bound(x+1,x+i,up)-x;
if(u>1 and x[u-1]==up) u--;
D[i]=min(D[i-1]+1,D[u-1]+k);
}
fo<<D[n]<<"\n";
return 0;
}
