为什么超时,求救

P1923 【深基9.例4】求第 k 小的数

lucy2012 @ 2024-02-19 18:19:33

#include<bits/stdc++.h>
using namespace std;
int maxn(int a[],int n,int k)
{
    bool p=true;
    int x,num,i=0;
    while (p)
    {
        x=a[i];
        num=0;
        for(int j=0;j<=n;i++){
            if(x>a[j])
                num++;
        }
        if(num==k)
            p=false;
        else
            i++;
    }
    return x;
}
int main(){
    int n,k;
    cin>>n>>k;
    int a[n+1];
    for(int i=0;i<n;i++)
        cin>>a[i];
    cout<<maxn(a,n,k);
    return 0;
}

by SwethessPotion @ 2024-02-19 18:50:02

~~验证码是2ace,是两次AC还是两次CE呢?~~

by lucy2012 @ 2024-02-19 19:53:08

@SwethessPotion 是这样吗?

#include<bits/stdc++.h>
using namespace std;
int maxn(int a[],int n,int k)
{
    bool p=true;
    int x,num,i=0;
    while (p)
    {
        x=a[i];
        num=0;
        for(int j=0;j<=n;i++){
            if(x>a[j])
                num++;
        }
        if(num==k)
            p=false;
        else
            i++;
    }
    return x;
}
int a[10000000];
int main(){
    int n,k;
    cin>>n>>k;
    for(int i=0;i<n;i++)
        cin>>a[i];
    cout<<maxn(a,n,k);
    return 0;
}

by SwethessPotion @ 2024-02-19 20:15:07

@lucy2012 是的,记住以后很大的数组不能再函数里开,不然容易承受不住

附赠一张MLE表:

数据类型 10^3数组占用MB
int 0.0038
long long 0.0076
boolchar 0.0009
string 0.01左右

by Xwit @ 2024-02-29 16:47:19

记得关闭ios::sync_with_stdio(false); 不然也会超时


|