Description
快过生日了,Plato收到了很多礼物。每个礼物都有一个金额,无聊的Plato想知道这些礼物中第K大的价格是多少。
Input
多组数据
每组数据第一行有两个数N(0<N<=500000)和K(0<K<500),N代表礼物个数,K代表第K大。
Output
输出第K大的价格
Sample Input
4 2
1 4 3 2
Sample Output
3
解题思路:
这里我用了STL中nth_element先找到K个最大的数,然后从中K个最大的数中找到最小的那个数。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int INF = 1000000000;
vector<int> price;
int main()
{
int N,K;
while(cin>>N>>K)
{
price.clear();
for(int i=0;i<N;++i)
{
int t;
cin>>t;
price.push_back(t);
}
nth_element(price.begin(),price.end()-K,price.end());
vector<int>::iterator iter = price.end()-K;
int minV = INF;
while(iter!=price.end())
{
if(*iter<minV)
minV = *iter;
++iter;
}
cout<<minV<<endl;
}
return 0;
}
最后欢迎大家访问我的个人网站: 1024s