头文件 #include<algorithm>
排序 1 ~ n sort (a + 1, a + 1 + n) 默认从小到大;
sort(首元素地址, 末尾元素值 + 1);
从大到小排序
sort(a + 1, a + 1 + n, greater<int>());
翻转数组函数 reverse(a + 1, a + 1 + n); 参数和sort一样
struct node{
int x;
int y;
bool operator < (const node& w) const { // 重载操作符
return x < w.x;
}
}a[100010];
#include<iostream>
#include<algorithm>
using namespace std;
int n;
struct node{
double h;
int xb; // xb = 0 代表男的 xb = 1 代表女的
}a[100010];
bool cmp(node a, node b) {
return a.h < b.h;
}
int main() {
cin >> n;
for(int i = 1; i <= n; i++) {
string s;
cin >> s;
double h;
cin >> h;
if(s == "male") a[i].xb = 0;
else a[i].xb = 1;
//记录性别
a[i].h = h;
}
sort(a + 1, a + 1 + n, cmp);
//按照身高排序了
for(int i = 1; i <= n; i++) {
if(a[i].xb == 0) printf("%.2lf ", a[i].h);
}
//从矮到高输出男的身高
for(int i = n; i >= 1; i--) {
if(a[i].xb == 1) printf("%.2lf ", a[i].h);
}
}