时间限制: 1 Sec 内存限制: 64 MB提交 状态
题目描述
现有n个正整数,n≤100000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤400。
输入
第1行为n和k,第2行开始为n个正整数的值,整数间用空格隔开。
输出
第k个最小整数的值;若无解,则输出“NO RESULT”。
样例输入 Copy
10 3 1 3 3 7 2 5 1 2 4 6样例输出 Copy
3 #pragma GCC optimize(1) #pragma GCC optimize(2) #pragma GCC optimize(3,"Ofast","inline") #include <bits/stdc++.h> using namespace std; const int mod=1e9+7; const int N = 10000010; set<int>s; int main() { int n,k; cin>>n>>k; for(int i=1; i<=n; i++) { int a; scanf("%d",&a); s.insert(a); } int cnt=0,f=0; set<int>::iterator it; for(it=s.begin(); it!=s.end(); it++) //使用迭代器进行遍历 { cnt++; if(cnt==k) printf("%d\n",*it),f=1; if(cnt>=k) break; } if(f==0) printf("NO RESULT"); return 0; }