Pagini recente » Cod sursa (job #425853) | Rezultatele filtrării | Cod sursa (job #1137749) | Cod sursa (job #2154080) | Cod sursa (job #2021726)
#include <cstdio>
#include <algorithm>
using namespace std;
int v[1000001];
int main()
{
FILE *fin=fopen ("zombie.in","r");
FILE *fout=fopen ("zombie.out","w");
int d,n,k,i,sol,st,dr,mid;
fscanf (fin,"%d%d%d",&d,&n,&k);
for (i=1;i<=n;i++)
fscanf (fin,"%d",&v[i]);
sort (v+1,v+n+1);
sol=0;
for (i=1;i<=n;i++){
// caut cel mai mare nr mai mic sau egal ca v[i]+d-1
st=i;
dr=n;
while (st<=dr){
mid=(st+dr)/2;
if (v[mid]>v[i]+d-1)
dr=mid-1;
else st=mid+1;
}
if (dr-i+1>=k){
sol+=k;
i=dr;
}
else sol++;
}
fprintf (fout,"%d",sol);
return 0;
}