hoj3271

来源:互联网 发布:mysql备份数据库表 编辑:程序博客网 时间:2024/05/21 17:52

题意:nth_element
题解:stl中nth_element函数或者(伪)快排?

 nth_element(array, array+k, array+len); 
#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;#define N 10000005#define ll long long#define inf 0x7fffffff#define OO __attribute__((optimize("-O2")))int n,m;int a[N];int read(){    int x=0;bool f=0;char ch;    for(ch=getchar();ch<'0'||ch>'9';ch=getchar())f=ch=='-';    for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+(ch^48);if(f)x=-x;return x;}void q_Sort(int L,int R){    if(L>=R) return;    int mid=L+(R-L)/3;    swap(a[L],a[mid]);    int l=L,r=R;int key=a[L];    while(l<r){        while(l<r&&a[r]>key) r--;        a[l]=a[r];        while(l<r&&a[l]<=key) l++;        a[r]=a[l];    }    a[l]=key;    if(m<l) q_Sort(L,l-1);    if(m>r) q_Sort(r+1,R);}int main(){    while(~scanf("%d%d",&n,&m)){        for(int i=n;i;i--)            a[i]=read();        //for(int i=1;i<=n;i++) swap(a[rand()%n+1],a[rand()%n+1]);        q_Sort(1,n);        printf("%d\n",a[m]);    }    return 0;}
原创粉丝点击