第 k 小整数
题目描述
现有 $n$ 个正整数,$n \leq 10000$,要求出这 $n$ 个正整数中的第 $k$ 个最小整数(相同大小的整数只计算一次),$k \leq 4000$,正整数均小于 $30000$。
输入格式
第一行为 $n$ 和 $k$;
第二行开始为 $n$ 个正整数的值,整数间用空格隔开。
输出格式
第 $k$ 个最小整数的值;若无解,则输出 NO RESULT
。
样例数据 1
输入
1 2
| 10 3 1 3 3 7 2 5 1 2 4 6
|
输出
样例数据 2
输入
1 2
| 10 9 1 3 3 7 2 5 1 2 4 6
|
输出
源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <algorithm> #include <cstdio> #include <cstring> #include <iostream> #include <vector> #define MAX 30000 using namespace std; bool num[MAX]; vector<int> vc; int main() { int tmp, k; cin >> tmp >> k; while (cin >> tmp) num[tmp] = true; for (int i = 0; i < MAX; i++) if (num[i] == true) vc.push_back(i); sort(vc.begin(), vc.end()); if (k > vc.size()) cout << "NO RESULT"; else cout << vc[k - 1]; return 0; }
|