100
#LS1034. 【入门】去重后第k小整数

【入门】去重后第k小整数

题目描述

现有 nn 个正整数,要求出这 nn 个正整数中的第 kk 个最小整数(相同大小的整数只计算一次)。

输入格式

第一行为 nnkk; 第二行开始为 nn 个正整数的值,整数间用空格隔开。

输出格式

kk个最小整数的值;若无解,则输出 NO RESULT

10 3
1 3 3 7 2 5 1 2 4 6
3

提示

  • 可以考虑先将数组排序然后去重
sort(a.begin(), a.end());
a.erase(unique(a.begin(), a.end()), a.end());
  • 也可以考虑用 set 去重
set<int> s;
for (int i = 0; i < n; i++) {
    cin >> x;
    s.insert(x);
}
// 判断 s.size() 是否大于等于 k
if (s.size() < k) cout << "NO RESULT" << endl;
else {
    int cnt = 0;
    for (int x : s) {
        if (++cnt == k) {
            cout << x << endl;
            break;
        }
    }
}

数据规模与限制

  • n10000n \leq 10000k1000k \leq 1000,正整数均小于 3000030000
  • 1s, 1024KiB for each test case.