合影

1.4k 词

题目描述

小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?

输入

第一行是人数n($2<= n<= 40$,且至少有1个男生和1个女生)。
后面紧跟n行,每行输入一个人的性别(男male或女female)和身高(浮点数,单位米),两个数据之间以空格分隔。

输出

n个浮点数,模拟站好队后,拍照者眼中从左到右每个人的身高。每个浮点数需保留到小数点后2位,相邻两个数之间用单个空格隔开。

样例输入

1
2
3
4
5
6
7
6
male 1.72
male 1.78
female 1.61
male 1.65
female 1.70
female 1.56

样例输出

1
1.65 1.72 1.78 1.70 1.61 1.56

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.util.*;

public class Main {
public static void main(String[] ar) {
Scanner cin = new Scanner(System.in);
int a = cin.nextInt();
List<Double> ts = new ArrayList<>();
List<Double> ty = new ArrayList<>();
for (int j = 0; j < a; j++) {
String sex = cin.next();
double ma;
double me;
if (sex.equals("male")) {
ma = cin.nextDouble();
ts.add(ma);
} else {
me = cin.nextDouble();
ty.add(me);
}
}
ts.sort(new C2());
ty.sort(new C1());
for (double s : ts) {
String st = String.format("%.2f", s);
System.out.print(st);
System.out.print(" ");
}
for (double s : ty) {
String st = String.format("%.2f", s);
System.out.print(st);
System.out.print(" ");
}
}
}

class C1 implements Comparator<Double> {
@Override
public int compare(Double o1, Double o2) {
return o2.compareTo(o1);
}
}

class C2 implements Comparator<Double> {
@Override
public int compare(Double o1, Double o2) {
return o1.compareTo(o2);
}
}