100
#LS1031. 【入门】排序后输出位置【入门】排序后输出位置
题目描述
输入 个数,将其从小到大排列。并输出排序之后的数,在原数组中的位置
数据保证这个 个数两两不同
- 比如数组 a 是 [6, 8, 10, 7, 9]
- 从小到大排序完后是 [6, 7, 8, 9, 10]
- 最后输出 1 4 2 5 3
- 因为 (a[1]=6) < (a[4]=7) < (a[2]=8) < (a[5]=9) < (a[3]=10)
- 请使用 sort 的自定义排序完成此题
输入格式
第一行一个整数 ,表示数的个数
第二行有 个整数,中间用一空格隔开。
输出格式
一行 个整数,每两个数之间用一空格隔开,输出排序后的数在原数组中的位置
5
6 8 10 7 9
1 4 2 5 3
提示
- 自定义排序的语法
// 原数组 a
vector<int> a(n);
for (int i = 0; i < n; i++) cin >> a[i];
// 数组 b 存储 a 的下标
vector<int> b(n);
for (int i = 0; i < n; i++) b[i] = i;
sort(b.begin(), b.end(), [&](const int& x, const int& y) {
// x 可以排在 y 前面返回 true, 否则返回 false
// x, y 都是数组 a 中的下标
// 那 下标x 什么时候应该排在 下标y 前面呢?
});
for (int i = 0; i < n; i++) cout << b[i] + 1 << ' ';
数据规模与限制
- 1s, 1024KiB for each test case.
相關
在以下功課中: