关于c++的排序问题,按倒序输出结果

题目要求如下
输入一个N(1<=N<=10^5)作为数组的长度,在输入一组int数字
按从大到小的顺序输出
我的代码如下:

#include <iostream>
#include <algorithm>
using namespace std;

int main() {

    int n;
    cin >> n;

    int* p = new int[n];


    for (int i = 0; i < n; i++) {
        cin >> p[i];
    }
    sort(p, p + n, greater<int>());

    for (int i = 0; i < n; i++) {
        cout << p[i] << ' ';
    }
    cout << endl;
    
    delete[]p;

    return 0;

}
但是我在测试的时候如果个数少都不会有什么问题,我自己编译的时候会出现-842150451之类的
然后在学校系统测试的时候总是显示timelimit (测试里有1000个数的例子,不符合答案要求)
有没有大佬能帮忙改一下代码 还有这到底是为什么呢?

时间限制是多少

你试一下不动态创建和删除数组看看会不会超时