Inoriant @ 2022-08-23 01:02:52
#include<bits/stdc++.h>
using namespace std;
int num[100000001],n;int k;
int mysort(int a,int b){
int mid=num[(a+b)/2],i=a,j=b;
while(i<=j){
while(num[i]<mid)i++;
while(num[j]>mid)j--;
if(i<=j){swap(num[i],num[j]);i++;j--;}
}
if(i<=k)mysort(i,b);
else if(k<=j)mysort(a,j);
else {cout<<num[k];exit(0);}
}
int main(){
cin>>n>>k;
k+=1;
for(int i=1;i<=n;i++)scanf("%d",&num[i]);//用cin会超时
mysort(1,n);
return 0;
}
改了半天#5一直超时 结果把cin换成scanf过了... cin和scanf的效率差别原来真的这么大吗
by HeCao2008 @ 2022-08-23 01:44:48
tlqtj,建议阅读新用户必读
如果是JC当我没说
by ud2_ @ 2022-08-23 01:45:12
如果只用 std::cin
输入那么在 main
开头加上 std::ios_base::sync_with_stdio(false)
。
by wangzl @ 2022-08-23 07:29:18
啊这不是常识吗
by SegTree @ 2022-08-23 07:31:34
@HeCao2008 不认为这是讨论区题解。lz 的问题是:
cin和scanf的效率差别原来真的这么大吗
by _l_l_ @ 2022-08-23 07:49:15
@HeCao2008 建议重新阅读本贴而非新用户必读
by JackMerryYoung @ 2022-08-23 08:01:50
@_ll 赞同。
@HeCao2008 这人只是在问问题吧。
by LeTu_Jun @ 2022-08-23 08:24:44
cin 如果不加优化语句比 scanf 慢上几倍
by HeCao2008 @ 2022-08-23 11:52:38
@Inoriant 对不起楼主我错了!!!实在抱歉。
cin 如果不关同步流比scanf慢上好多,也就是说如果,读入量非常大,比如说1e6,就不用cin,用scanf(或者快读)
当然,你也可以关闭同步流,int main 里面加这句:
ios::sync_with_stdio(false);
by Inoriant @ 2022-08-23 22:55:20
我本身不是弄信息竞赛的而且刚刚开始学 所以这些了解的比较少 不好意思... 不过谢谢各位大佬的解答了