后三个点超时,求助各位大佬帮忙看看该怎么改?

P1168 中位数

星球123 @ 2021-05-04 23:11:06

#include<bits/stdc++.h>
using namespace std;
int a[1000005];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    cout<<a[1]<<endl;
    for(int i=2;i+1<=n;i+=2)
    {
        sort(a+1,a+i+2);
        cout<<a[(i+2)/2]<<endl;
    }
    return 0;
}

by ricky0916 @ 2021-05-04 23:50:56

排n次序怎么可能对啊


by lcyxds @ 2021-05-05 22:04:43

@星球123 由于你要对 O(N) 个长度为 O(N) 的数组排序,你的时间复杂度是 \Theta(N^2\log N),正解是 O(NlogN),建议你使用树状数组或者 STL 堆来做这题


by 星球123 @ 2021-05-05 22:43:54

@lcyxds 好的,我再试试,感谢!


|