ykh2016 @ 2021-10-10 14:22:44
#include<iostream>
#include<cstdio>
using namespace std;
int n,a[5000001];
void qsort(int l,int r)
{
int mid=a[(l+r)/2];
int i=l,j=r;
while(i<=j){
while(a[i]<mid) i++;
while(a[j]>mid) j--;
if(i<=j)
{
swap(a[i],a[j]);
i++;
j--;
}
}
if(l<j) qsort(l,j);
if(i<r) qsort(i,r);
}
int main()
{
int k;
scanf("%d",&n);
scanf("%d",&k);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
qsort(1,n);
printf("%d",a[k+1]);
return 0;
}
by LYqwq @ 2021-10-10 14:26:00
@ykh2016 语言选c++17,开O2
by ykh2016 @ 2021-10-10 14:30:48
@eric888 啊通过了,谢谢大佬。请问这是什么原理QWQ
by LYqwq @ 2021-10-10 14:34:57
@ykh2016 O2是一种编译上的优化,通常你如果有TLE的题,开一下O2优化,时间会减少,对STL及其有用,但是用O2过的题,有一些还是用正解比较好,开O2过的一般不是正解。其实你这个代码经过一定优化还是可以过的,建议翻一下第3,4篇题解看看,学习一下
by LYqwq @ 2021-10-10 14:36:16
不看第4篇题解,第2篇好一点
by ykh2016 @ 2021-10-10 14:37:09
@eric888 ok,谢谢啦
by afowww @ 2021-11-12 23:44:19
不开o2的话,这题有五百万的数据,读入量非常大,就不能用scanf和cin了,要手写快读。我759ms过了