之
Description
小李的识记能力非常强,一列数他一看就知道最大的是哪个数,这个数在原数列中的位置。现在的问题是给定一个各不相同的正整数数列,要你找出第K大的数是多少,并指出该数在原数列中的位置。
Input
共有三行,第一行是一个正整数N,表示原数列共有N个数,第二行是N个正整数,表示原数列中的每一个数。第三行是一个正整数,表示K的值。
Output
共二行,第一行是一个整数,表示原数列中第K大的数,第二行是一个正整数,表示第K大数在原数列中的位置。
Sample Input
5
34 12 55 42 90
3
Sample Output
42
4
Source
elba
题解:
本题排个序,再输出就行了(注意是输出第k大,不是第k小)
var
a:array[0..100,1..2]of longint;
n,i,j,k:longint;
begin
read(n);
for i:=1 to n do
begin
read(a[i,1]);
a[i,2]:=i;//原数列中的位置
end;
read(k);
for i:=1 to n-1 do//数据范围很小,选排即可
for j:=i to n do
if a[i,1]<a[j,1] then//从大到小排序
begin
a[0]:=a[i];
a[i]:=a[j];
a[j]:=a[0];
end;
writeln(a[k,1]);//输出
write(a[k,2]);
end.
本文介绍了一个2008年的东莞特长生案例——聪明的小李,他的记忆力出众,能迅速找到数列中第K大的数及其在原数列的位置。通过简单的选择排序算法实现这一目标。

被折叠的 条评论
为什么被折叠?



