题目
分析
根据两个关键字排序之后,按题目输出就完事了
首先排好序,过笔试的人为m*1.5,int类型下自动向下取整,可以求得分数线。
然后枚举大于等于分数线,得到真实过笔试人数,然后输出这些符合要求的人即可。
代码
import java.util.Arrays;
import java.util.Scanner;
public class 分数线 {
public static class off implements Comparable<off>{
private int id,va;
public off(int id,int va) {
this.id=id;this.va=va;
}
@Override
public int compareTo(off o) {
if(va>o.va) {
return -1;
}else if(va<o.va) {
return 1;
}else {
if(id>o.id) {
return 1;
}else {
return -1;
}
}
}
}
static int n,m;
static off a[];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();m=sc.nextInt();m*=1.5;
if(m>n)m=n; //可能乘1.5之后还比总人数多。。。
a=new off[n+1];
for (int i =1; i <=n; i++) {
a[i]=new off(sc.nextInt(),sc.nextInt());
}
Arrays.sort(a,1,a.length); //排序
int cnt=0;int va=a[m].va;
for (int i =1; i <a.length; i++) { //求出真实人数
if(a[i].va>=va)cnt++;
}
System.out.println(va+" "+cnt); //按要求输出
for (int i =1; i <=cnt; i++) {
System.out.println(a[i].id+" "+a[i].va);
}
}
}