测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A39819. 合影效果

填空题 较易

题目描述

合影效果

题目描述

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

输入:

第一行是人数n(2 <= n <= 40,且至少有1个男生和1个女生)。

后面紧跟n行,每行输入一个人的性别(男male或女female)和身高(浮点数,单位米),两个数据之间以空格分隔。

输出:

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

样例输入:

6

male 1.72

male 1.78

female 1.61

male 1.65

female 1.70

female 1.56

样例输出:

1.65 1.72 1.78 1.70 1.61 1.56

参考答案

#include <bits/stdc++.h> #include <stdio.h> using namespace std; struct human { //定义一个数组包括性别,身高 string sex; double height; } hu[45],m[45],fe[45]; int com1(human x,human y) { //定义一个函数:从低到高排序 return x.height<y.height; } int cmp(human n,human m) { //定义一个函数:从高到低排序 return n.height>m.height; } int main() { int n,j=0,k=0; cin>>n; for (int i=0;i<n;i++) { cin>>hu[i].sex>>hu[i].height; //输入性别,身高 if(hu[i].sex=="male")//如果是男生就放在m结构体中 m[j++]=hu[i]; else if(hu[i].sex=="female")//如果是女生就放在fe结构体中 fe[k++]=hu[i]; } sort(m,m+j,com1); //对男生按低到高排序 sort(fe,fe+k,cmp); //对女生按高到低排序 for (int a=0;a<j;a++)//先输出男生身高 printf("%.2lf ",m[a].height); for (int b=0;b<k;b++)//再输出女神身高 printf("%.2lf ",fe[b].height); return 0; }
上一题 下一题