赞
踩
题目描述:
某学校举行运动会,学生们按编号(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; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。