Pagini recente » Cod sursa (job #2454516) | Cod sursa (job #2611242) | Cod sursa (job #2218833) | Cod sursa (job #1757406) | Cod sursa (job #637016)
Cod sursa(job #637016)
#include<cstdio>
using namespace std;
long n,d,k,i;
long c[1000011];
long a[1000011];
void rez() {
long i,rasengan,rasengan2,min_rasengan2,j,st,dr,val,m;
scanf("%ld%ld%ld",&d,&n,&k);
for (i=1;i<=n;i++) {
scanf("%ld",&a[i]);
rasengan=c[i-1]+1;
st=0;
dr=i;
val=a[i]-d;
j=-1;
if (val>=0) {
while (st<=dr) {
m=(st+dr)>>1;
if (a[m]==val) {
j=m;
break;
}
if (a[m]<val)
st=m+1;
else
dr=m-1;
}
}
if (j==-1)
j=st;
min_rasengan2=c[j]+k;
if (rasengan<min_rasengan2)
c[i]=rasengan;
else
c[i]=min_rasengan2;
}
printf("%ld\n",c[n]);
}
int main () {
long i,rasengan,rasengan2,min_rasengan2,j,st,dr,val,m;
freopen("zombie.in","r",stdin);
freopen("zombie.out","w",stdout);
scanf("%ld%ld%ld",&d,&n,&k);
for (i=1;i<=n;i++) {
scanf("%ld",&a[i]);
rasengan=c[i-1]+1;
st=0;
dr=i;
val=a[i]-d;
j=-1;
if (val>=0) {
while (st<=dr) {
m=(st+dr)>>1;
if (a[m]==val) {
j=m;
break;
}
if (a[m]<val)
st=m+1;
else
dr=m-1;
}
}
if (j==-1)
j=st;
min_rasengan2=c[j]+k;
if (rasengan<min_rasengan2)
c[i]=rasengan;
else
c[i]=min_rasengan2;
}
printf("%ld\n",c[n]);
return 0;
}