2115lhx @ 2023-02-07 12:55:38
最后一个数据总是超时
#include<iostream>
using namespace std;
int m,k;
int a[5000002];
void sort(int l,int r) {
int i=l,j=r,mid=a[(l+r)/2];
while(i<=j) {
while(a[i]<mid)i++;
while(a[j]>mid)j--;
if(i<=j) {
swap(a[i],a[j]);
i++;
j--;
}
}
if(k<=j)sort(l,j);
else if(k>=i)sort(i,r);
else return ;
}
int main() {
cin>>m>>k;
for(int i=0; i<m; i++)
cin>>a[i];
sort(0,m-1);
cout<<a[k];
return 0;
}
by lyxleo @ 2023-02-07 12:57:59
加个读入优化就过了
by RP_INT_MAX @ 2023-02-07 13:01:30
@2115lhx 乐。cin 勇士。
by RP_INT_MAX @ 2023-02-07 13:02:28
建议用 scanf,或者加上这两行:
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
by 2115lhx @ 2023-02-07 13:07:27
@RP_INT_MAX 只有cin会超时吗?scanf是不是几乎不会超时?
by zgy_123 @ 2023-02-07 13:09:03
@2115lhx 比如scanf
5e7的数据就会T
by RP_INT_MAX @ 2023-02-07 13:10:52
楼上正解。
by 2115lhx @ 2023-02-07 13:12:01
@Gavin2011 明白了,谢谢