没开O2的时候最后一个点超时,开了就过了,什么原理呀
#include<bits/stdc++.h>
using namespace std;
const int MAXN=5000010;
long long n,m;
int q[MAXN];
void qsort(int q[],int l,int r)
{
if(l>=r) return;
int x=q[l+r>>1],i=l-1,j=r+1;
while(i<j)
{
do i++;while(q[i]<x);
do j--;while(q[j]>x);
if(i<j) swap(q[i],q[j]);
}
qsort(q,l,j),qsort(q,j+1,r);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;++i)
scanf("%d",&q[i]);
qsort(q,0,n-1);
printf("%d",q[m]);
return 0;
}