Cod sursa(job #638272)

Utilizator costyv87Vlad Costin costyv87 Data 20 noiembrie 2011 19:58:12
Problema Zombie Scor 0
Compilator cpp Status done
Runda .com 2011 Marime 0.62 kb
#include <cstdio>
FILE *f,*g;
int v[1000100];
int a[1000100];
int n,k,d,mn,i;

inline int mnn(int x,int y) {
if (x>y) return y;
return x;
}

void caut(int i,int j,int x) {
int m;

if (i<=j) {
	m=(i+j)/2;
	if (a[m]>=x) {
		if (m<mn) mn=m;
		caut(i,m-1,x);
		}
	else
		caut(m+1,j,x);
	}

}

int main() {
f=fopen("zombie.in","r");
g=fopen("zombie.out","w");

fscanf(f,"%d%d%d",&d,&n,&k);

v[0]=0;

for (i=1;i<=n;i++) {
	fscanf(f,"%d",&a[i]);
	if (i<=k) {
		v[i]=i;
		continue;
		}
	mn=i;
	caut (1,i-1,a[i]-d+1);
	v[i]=mnn(v[mn-1]+k,v[i-1]+1);
	}


fprintf(g,"%d",v[n]);
fclose(g);
return 0;
}