当前位置:   article > 正文

按身高和体重排队_200人按身高排队

200人按身高排队

按身高和体重排队

题目描述:
某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,
按体重由轻到重排列;对于身高体重都相同的人,维持原有的编号顺序关系。请输出排列后的学生编号。
输入描述:
两个序列,每个序列由 n 个正整数组成(0 < n <= 100)。第一个序列中的数值代表身高,第二个序列中的数值代表体重。
输出描述:
排列结果,每个数值都是原始序列中的学生编号,编号从 1 开始
示例 1
输入:
4
100 100 120 130
40 30 60 50
输出:2134

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

typedef struct Student{
	int number;
	int height;
	int weight;
};

bool operator<(const Student& st1,const Student& st2){
	if(st1.height<st2.height) return true;
	else if(st1.height==st2.height && st1.weight<st2.weight) return true;
	else return false;
}

void ShowStudent(const Student& st){
	cout<<st.number;
}

int main(){
	int n;
	cin>>n;
	vector<int> tmp;
	vector<Student> sts;
	for(int i=0;i<n;++i){
		int temp;
		cin>>temp;
		tmp.push_back(temp);
	}
	for(int i=0;i<n;++i){
		Student st;
		st.number=i+1;
		st.height=tmp[i];
		cin>>st.weight;
		sts.push_back(st);
	}
	sort(sts.begin(),sts.end());
	for_each(sts.begin(),sts.end(),ShowStudent);
	cout<<endl;
	return 0;
}
  • 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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/136133
推荐阅读
相关标签
  

闽ICP备14008679号