洛谷 P1138 第k小整数
题目描述
现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤1000,正整数均小于30000。
输入输出格式
输入格式:
第一行为n和k; 第二行开始为n个正整数的值,整数间用空格隔开。
输出格式:
第k个最小整数的值;若无解,则输出“NO RESULT”。
输入输出样例
输入样例#1:
10 3 1 3 3 7 2 5 1 2 4 6
输出样例#1:
3
说明
n≤10000
——————————————————我是分割线————————————————————
1 /* 2 Problem: 3 OJ: 4 User: S.B.S. 5 Time: 6 Memory: 7 Length: 8 */ 9 #include<iostream> 10 #include<cstdio> 11 #include<cstring> 12 #include<cmath> 13 #include<algorithm> 14 #include<queue> 15 #include<cstdlib> 16 #include<iomanip> 17 #include<cassert> 18 #include<climits> 19 #include<functional> 20 #include<bitset> 21 #include<vector> 22 #include<list> 23 #define F(i,j,k) for(int i=j;i<=k;++i) 24 #define M(a,b) memset(a,b,sizeof(a)) 25 #define FF(i,j,k) for(int i=j;i>=k;i--) 26 #define maxn 10001 27 #define inf 0x3f3f3f3f 28 #define maxm 4001 29 #define mod 998244353 30 //#define LOCAL 31 using namespace std; 32 int read(){ 33 int x=0,f=1;char ch=getchar(); 34 while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} 35 while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} 36 return x*f; 37 } 38 int n,m,k; 39 int a[maxn]; 40 int main() 41 { 42 std::ios::sync_with_stdio(false);//cout<<setiosflags(ios::fixed)<<setprecision(1)<<y; 43 #ifdef LOCAL 44 freopen("data.in","r",stdin); 45 freopen("data.out","w",stdout); 46 #endif 47 cin>>n>>k; 48 F(i,1,n) cin>>a[i]; 49 sort(a+1,a+n+1); 50 if(k>unique (a+1,a+n-1)-a-1) 51 cout<<"NO RESULT"<<endl; 52 else cout<<a[k]<<endl; 53 return 0; 54 }