求一串数字中第K大的数(STL+读入优化)

来源:互联网 发布:上海 数据恢复中心 编辑:程序博客网 时间:2024/04/24 19:21
#include <iostream>#include <stdio.h>#include <set>#include <algorithm>using namespace std;//读入优化函数int get_val(){ int ret=0; char c; while((c=getchar())!=' '&&c!='\n')  ret=ret*10+c-'0'; return ret;}int main( ){    int  a, n, k, size;    multiset<int> mySet;    multiset<int>::iterator iter;    scanf("%d %d",&n,&k);    size = 0;  //保持set里面只有K个数,提高效率    do    {        a=get_val();        if(size++ < k)        {            mySet.insert(a);        }        else        {            iter = mySet.begin();            if(a > *iter)            {                mySet.erase(iter);                mySet.insert(a);            }        }    }    while(--n );    iter = mySet.begin();    printf("%d\n",*iter);    return 0;}

0 0
原创粉丝点击