题目简介
题目描述
输入 n(1<=n<5000000 且 nn 为奇数)个数字 a[i](1 <= a[i] < 10 ^ 9),输出这些数字的第 k 小的数。最小的数是第 0 小。
请尽量不要使用 nth_element
来写本题,因为本题的重点在于练习分治算法。
输入格式
无
输出格式
无
输入输出样例
输入 #1
5 1 4 3 2 1 5
输出 #1
2
思路
先排序,在输出第K小的数。
代码
#include<bits/stdc++.h>
using namespace std;
long long a[5000000]; //定义
int n, k;//定义
int main()
{
cin >> n >> k;//输入
for(int i = 0; i < n; i++)
{
cin >> a[i];//输入
}
sort(a, a + n);//排序
cout << a[k];//输出第K小的数
return 0;//好习惯
}
But 这个代码只能得60分
SO
AC代码
#include<bits/stdc++.h>
using namespace std;
long long a[5000000]; //定义
int n, k;//定义
int main()
{
ios_base::sync_with_stdio(0);//快读,快输(很高级,一定要记得)
cin >> n >> k;//输入
for(int i = 0; i < n; i++)
{
cin >> a[i];//输入
}
sort(a, a + n);//排序
cout << a[k];//输出第K小的数
return 0;//好习惯
}//最后记得开O2优化,不然60分