求助,P1923最后两个点超时
  • 板块学术版
  • 楼主lzljgj
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/8/10 19:57
  • 上次更新2023/10/27 16:03:46
查看原帖
求助,P1923最后两个点超时
523559
lzljgj楼主2022/8/10 19:57

#include <iostream>
using namespace std;
int n,k,ans,num=0;
int a[10000000];

void px(int q[],int l,int r){
if(l>=r)return;
int temp=q[(l+r)/2],i=l-1,j=r+1;

while (i<j){
    do i++;while (q[i]<temp);
    do j--;while (q[j]>temp);
    if(j>i){swap(a[i],a[j]);}
}
px(q,l,j);
px(q,j+1,r);


return;
}

int main(){
cin >> n >>k;
for(int i=0;i<n;i++){
    scanf("%d",&a[i]);
}

px(a,0,n-1);
ans=0;
if(k==0)ans=0;
if(k>0){
for(int i=1;i<n;i++){

    if(a[i]>a[ans] )ans=i;num++;
    if(num==k)break;
}
}

cout<<a[ans];

return 0;
}

只过了前三个点,怎样优化才能不超时 P1923

2022/8/10 19:57
加载中...