ts,td,下面是按照ts时间排序,基础上再对td排序,while中的>=d表示时间大于要求不合格
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int d = scanner.nextInt();
int k = scanner.nextInt();
int N = 100005;
Cmp cmp[] = new Cmp[n];
for (int i = 0; i < n; i++) {
cmp[i] = new Cmp(scanner.nextInt(), scanner.nextInt());
}
Arrays.sort(cmp);
int count[] = new int[N];
int flag[] = new int[N];
for (int i = 0, j = 0; i < n; i++) {
count[cmp[i].id]++;
while (cmp[i].ts - cmp[j].ts >= d) {
count[cmp[j].id]--;
j++;
}
if (count[cmp[i].id] >= k) {
flag[cmp[i].id] = 1;
}
}
for (int i = 0; i < N; i++) {
if(flag[i]==1){
System.out.println(i);
}
}
}
}
class Cmp implements Comparable<Cmp> {
int ts, id;
Cmp(int a, int b) {
ts = a;
id = b;
}
@Override
public int compareTo(Cmp o) {
return this.ts - o.ts;
}
}
public class Solution {
public int[] twoSum(int[] numbers, int target) {
HashMap<Integer,Integer> map=new HashMap<>();
for(int i=0;i<numbers.length;i++){
if(map.get(numbers[i])!=null){
int [] result={map.get(numbers[i]),i};
return result;
}
//不能放在上面的if之前
map.put(target-numbers[i],i);
}
//如果不存在
int[] result={};
return result;
}
}