Pagini recente » Cod sursa (job #2380328) | Cod sursa (job #1577813) | Cod sursa (job #1059016) | Cod sursa (job #1623704) | Cod sursa (job #2506669)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("zombie.in");
ofstream fout("zombie.out");
#define nmax 1000005
int n,d,k,v[nmax],st=1,nr=0,ans,caut;
long long Sum=0;
void Read()
{
fin>>d>>n>>k;
for(int i=1;i<=n;i++)
fin>>v[i];
}
int Search(int x, int st)
{
int sol=-1,left=st,right=n;
while(left<=right)
{
int mid=(left+right)/2;
if(v[mid]==x)
{
sol=mid;
break;
}
if(v[mid]>x)
right=mid-1;
if(v[mid]<x)
left=mid+1;
}
if(sol<0)
{
sol=left;
if(sol<st)
sol++;
if(sol>n)
sol--;
if(v[sol]>x)
sol--;
}
return sol;
}
void Sol()
{
while(st<=n)
{
caut=v[st]+d;
ans=Search(caut,st);
nr=ans-st+1;
st=ans+1;
Sum+=min(ans,k);
}
fout<<Sum<<'\n';
}
int main()
{
Read();
Sol();
}