洛谷 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 }
View Code
原文地址:https://www.cnblogs.com/SBSOI/p/6093854.html