【问题描述】
军方截获的信息由n(n<=30000)个数字组成,因为是敌国的高端秘密,所以一时不能破获。最原始的想法就是对这n个数进行小到大排序,每个数都对应一个序号,然后对第i个是什么数感兴趣,现在要求编程完成。
【输入格式】
第一行n,接着是n个截获的数字,接着一行是数字k,接着是k行要输出数的序号。
【输出格式】
k行序号对应的数字。
【输入样例】Secret.in
5
121 1 126 123 7
3
2
4
3
【输出样例】Secret.out
7
123
121
题目分析:
这道题是一道较简单的排序题,因为对相对位置没有要求,所以使用快速排序就可以轻松地过了。在实际比赛中我建议读者直接使用STL库中的sort模板函数,而在平时练习的时候自己亲手写一遍快排以增加自己对快速排序的熟练度。
代码示例
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
int a[40000] = { 0 };
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n);
cin >> n;
for (int i = 0; i < n; i++)
{
int tmp;
cin >> tmp;
cout << a[tmp - 1] <<endl;
}
return 0;
}