#P1476. 2024.9.19-秋招(留学生)-第1题-十六进制权重数组分析

2024.9.19-秋招(留学生)-第1题-十六进制权重数组分析

题目内容

设计一个程序来处理特定的数组分析问题。

给定一个非负整数数组arrarr,其中每个整数用其十六进制表示中的数字之和来表示其“权重”(权重计算是基于十六进制表示中每位数字的和,00 ~ 99代表权重00~ 99,权重A:10B:11C:12D:13E:14F:15A:10、B:11、C:12、D:13、E:14、F:15)。

您的任务是找出数组中每个元素右侧第一个具有更大“权重”的元素,并返回一个新的数组,该数组包含这些元素的索引。

如果一个元素的右侧没有更大“权重”的元素,则对应位置返回 1-1

输入描述

第一行:一个整数 NN,表示数组 arrarr 的大小,0<N<1000000<N<100000

第二行:NN 个由空格分隔的非负整数,表示数组 arrarr0arri0xffffffff0 ≤ arri ≤ 0xffffffff

输出描述

一行:NN个整数,表示每个元素右侧第一个权重更大的元素的索引,如果不存在则为1-1

样例1

输入

3
12 3 24

输出

-1 2 -1

说明

十六进制表示分别为:[C,3,18][C,3,18]

对应的权重分别为:[12,3,1+8=9][12,3,1+8=9]

对于第一个元素 1212(权重1212),其右侧没有更大权重的元素,因此返回 1-1

对于第二个元素 33(权重33),其右侧第一个更大权重的元素是2424(权重99),位于索引22

对于第三个元素 2424(权重99),其不侧没有更大权重的元素,因此返回 1-1

样例2

输入

5
15 8 23 42 7

输出

-1 3 3 -1 -1

说明

十六进制表示分别为:[F,8,17,2A,7][F,8,17,2A,7]

对应的权重分别为:[15,8,8,2+10=12,7][15,8,8,2+10=12,7]

对于第一个元素 1515(权重1515),其右侧没有更大权重的元素,因此返回 1-1

对于第二个元素88(权重88)和第三个元素 2323(权重88),右侧第一个更大权重的元素是 4242(权重1212),位于索引33

对于第四个元素 4242(权重1212)和第五个元素77(权重77),其右侧没有更大权重的元素,因此对应位置返回 1-1