暴力求解
注意细节,有可能会出现边界问题
#include <iostream>
#include <bits/stdc++.h>
#define IOS std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define ll long long
const ll N = 1e6;
ll n,d,k;
struct ii{
ll a;
ll b;
friend bool operator<(ii &w1,ii &w2){
if(w1.a != w2.a) return w1.a < w2.a;
else return w1.b < w2.b;
}
}p[N];
bool check(ll aa,ll bb){
for(ll i = aa; i <= bb; i ++){
ll jj = i;
ll re = 0;
while(p[jj].b - p[i].b <= d && jj <= bb){
re ++;
jj ++;
}
if(re >= k){
return true;
}
}
return false;
}
void solve(){
std::cin >> n >> d >> k;
for(ll i = 1; i <= n; i ++){
ll it,id;
std::cin >> it >> id;
p[i] = {id,it};
}
std::sort(p + 1,p + 1 + n);
for(ll i = 1; i <= n; i ++){
ll j = i;
while(p[j].a == p[i].a) j ++;
if(check(i,j - 1)){
std::cout << p[i].a << "\n";
}
i = j - 1;
}
return ;
}
int main(){
ll t = 1;
// std::cin >> t;
while(t --)
solve();
return 0;
}