【编程题目 |100分】按身高和体重排队【2021, 2022 H1 考试题 2023 Q2考试题 B


时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

64bit IO Format:%lld


本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,

编码后请点击”保存并调试“按钮进行代码提交。


题目描述

【按身高和体重排队】

  • 某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持原有的编号顺序关系。请输出排列后的学生编号。

输入描述

  • 两个序列,每个序列由n个正整数组成(0 < n <= 100)。第一个序列中的数值代表身高,第二个序列中的数值代表体重。

输出描述

  • 排列结果,每个数值都是原始序列中的学生编号,编号从1开始

示例1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

4

100 100 120 130

40 30 60 50

输出

2 1 3 4

说明

输出的第一个数字2表示此人原始编号为2,即身高为100,体重为30的这个人。

由于他和编号为1的人身高一样,但体重更轻,因此要排在1前面。

示例2 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

3

90 110 90

45 60 45

输出

1 3 2

说明

1和3的身高体重都相同,需要按照原有位置关系让1排在3前面,而不是3 1 2。


C++


#include<bits/stdc++.h>

using namespace std;

class Solution {
public:
    void solve(vector<int> heights, vector<int> weights, int n) 
    {
        vector<vector<int>> combine(n, vector<int>(3, 0));

剩余50%内容,购买单篇文章或订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JAVA


剩余50%内容,购买单篇文章或订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python解法一


剩余50%内容,购买单篇文章或订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python解法二


import functools

n = int(input())
highs = list(map(int, input().split()))
heights = list(map(int, input().split()))

剩余50%内容,购买单篇文章或订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JavaScript


let n = Number(readLine()); 
let h = readLine().split(" ").map(i=>parseInt(i)); 
let w = readLine().split(" ").map(i=>parseInt(i)); 

剩余50%内容,购买单篇文章或订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看