#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define fs first
#define se second
#define pi 2*acos(0)
#define PI 3.14159265358979323846264338
typedef long long ll;
typedef pair < int , int > pii;
typedef pair < ll , ll > pll;
const int N = 100010;
inline int in() {int x; scanf("%d",&x); return x;}
inline ll lin() {ll x; scanf("%lld",&x); return x;}
int fx[]={1,-1,0,0};
int fy[]={0,0,-1,1};
int inp[N];
int main(){
int n = in(), c = in(), k = in();
for(int i = 1; i <= n; i++){
inp[i] = in();
}
sort(inp + 1, inp + n + 1);
int ans = 0, start = 1;
while(start <= n){
int low = start, high = min(start + c - 1, n), mid, ok = start;
while(low <= high){
mid = (low + high) >> 1;
if(inp[start] + k >= inp[min(start + c - 1, n)]){
low = mid + 1;
ok = mid;
}else {
high = mid - 1;
}
}
ans++;
start = ok + 1;
}
printf("%d\n",ans);
}
./Main.cpp: In function ‘int in()’:
./Main.cpp:16:39: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
inline int in() {int x; scanf("%d",&x); return x;}
^