他有
名粉丝,编号从
到
,但他只能选择其中
名送礼物,他决定选择其中对他支持力度最大的前
名粉丝。
(如果两名支持力度相同,则优先选择收藏数更多的,如果都一样,则优先选择编号更小的(因为这意味着他关注小苯的时间更早))
具体的:每名粉丝如果每给小苯点一次赞,则他对小苯就增加了
现在小苯想知道,他应该选择哪
输入包含行。
第一行两个正整数,分别表示对小苯有过支持的粉丝个数,以及小苯选择送礼的粉丝个数。
接下来行,每行两个整数
,表示第
位粉丝给小苯点过
次赞,收藏过
个小苯的文章。
输出包含一行个正整数,表示小苯选择出送礼物的粉丝们的编号。(按照升序输出)
4 2 1 2 2 1 3 0 1 3
1 4
import java.util.*;
import java.io.*;
import java.util.stream.Collectors;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] line1 = bf.readLine().split(" ");
int n = Integer.parseInt(line1[0]), k = Integer.parseInt(line1[1]);
ArrayList<Fan> list = new ArrayList<>();
for (int i = 1; i <= n; i++) {
String[] line = bf.readLine().split(" ");
list.add(new Fan(i, Integer.parseInt(line[0]), Integer.parseInt(line[1])));
}
list.sort(new Comparator<Fan>() {
@Override
public int compare(Fan o1, Fan o2) {
int i = o2.score - o1.score;
i = i == 0 ? o2.col - o1.col : i;
i = i == 0 ? o1.id - o2.id : i;
return i;
}
});
int[] ids = new int[k];
for (int i = 0; i < k; i++) {
ids[i] = list.get(i).id;
}
Arrays.sort(ids);
System.out.println(Arrays.stream(ids).boxed().map(String::valueOf).collect(Collectors.joining(" ")));
}
}
class Fan {
int id;
int zan;//点赞数
int col;//收藏数
int score;
public Fan(int id, int zan, int col) {
this.id = id;
this.zan = zan;
this.col = col;
this.score = zan * 1 + col * 2;
}
} import java.util.*;
public class Main {
static class Fan {
int support; // 支持力度 = 点赞数 + 2*收藏数
int collect; // 收藏数,用于支持力度相同时的排序
int id; // 粉丝编号
Fan(int support, int collect, int id) {
this.support = support;
this.collect = collect;
this.id = id;
}
}
public static void main(String[] args) {
// 使用Scanner接收输入
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int k = scanner.nextInt();
Fan[] fans = new Fan[n];
for (int i = 0; i < n; i++) {
int x = scanner.nextInt(); // 点赞数
int y = scanner.nextInt(); // 收藏数
// 计算支持力度并存储粉丝信息
fans[i] = new Fan(x + 2 * y, y, i + 1);
}
// 自定义排序规则
Arrays.sort(fans, (a, b) -> {
// 首先按支持力度降序排列
if (a.support != b.support) {
return Integer.compare(b.support, a.support);
}
// 支持力度相同则按收藏数降序排列
if (a.collect != b.collect) {
return Integer.compare(b.collect, a.collect);
}
// 前两者都相同则按编号升序排列
return Integer.compare(a.id, b.id);
});
// 提取前k名粉丝的编号
int[] result = new int[k];
for (int i = 0; i < k; i++) {
result[i] = fans[i].id;
}
// 按编号升序排序结果
Arrays.sort(result);
// 输出结果
StringBuilder sb = new StringBuilder();
for (int i = 0; i < k; i++) {
sb.append(result[i]);
if (i < k - 1) {
sb.append(" ");
}
}
System.out.println(sb.toString());
// 关闭Scanner
scanner.close();
}
}