C++ 这段代码有什么问题?它显示了codechef编译器中的sigtstp运行时错误 #包括 使用名称空间std; int main(){ int T,N; cin>>T; 而(T--){ cin>>N; int-arr[N]; 对于(int i=0;i>arr[i]; } 排序(arr,arr+N); int x=arr[0]; int y=arr[N/2]; int z=arr[N-1]; inta=((abs(x-y)+abs(y-z)+abs(z-x)); cout

C++ 这段代码有什么问题?它显示了codechef编译器中的sigtstp运行时错误 #包括 使用名称空间std; int main(){ int T,N; cin>>T; 而(T--){ cin>>N; int-arr[N]; 对于(int i=0;i>arr[i]; } 排序(arr,arr+N); int x=arr[0]; int y=arr[N/2]; int z=arr[N-1]; inta=((abs(x-y)+abs(y-z)+abs(z-x)); cout,c++,C++,如评论中所述,您应避免: #包括 使用名称空间std 弗拉 但是,由于这种站点不幸地促进了C++代码的编写方式,而n=10 ^ 5不是那么大,所以不太可能是运行时错误的原因。 在实践中,结果等于2*(max-min)。由于绝对值小于或等于10^9,这意味着结果可以大到4 10^9(假设输入为负和正)。这对于int来说太大了 此外,排序在这里是无用的。在读取A值时,您可以只计算最小值和最大值 另一个结果是,您不需要任何数组,因此也不需要任何VLA!怎么了?竞争性编程的邪恶三位一体:和;)可变长

如评论中所述,您应避免:

  • #包括
  • 使用名称空间std
  • 弗拉
<>但是,由于这种站点不幸地促进了C++代码的编写方式,而n=10 ^ 5不是那么大,所以不太可能是运行时错误的原因。 在实践中,结果等于
2*(max-min)
。由于绝对值小于或等于10^9,这意味着结果可以大到4 10^9(假设输入为负和正)。这对于
int
来说太大了

此外,排序在这里是无用的。在读取
A
值时,您可以只计算最小值和最大值


另一个结果是,您不需要任何数组,因此也不需要任何VLA!

怎么了?竞争性编程的邪恶三位一体:和;)可变长度数组不是C++标准的一部分,很可能会导致堆栈溢出。使用<代码> STD::向量< /代码>。使用“代码> STD::向量< /代码>代替数组,看看这是否有助于质疑LINKEXPLORD代码> INTAR[N]; > <代码> STD::向量ARR(n)然后再试一次。VLA可能会在这里引起问题注:我提交了一个代码(只是为了检查这个答案),我得到了正确的100%验证,时间为0.02s,时间限制为1s。
#include<bits/stdc++.h>
using namespace std;


int main(){
    int T,N;

    cin>>T;
    while(T--){
        cin>>N;
        int arr[N];
        for(int i=0;i<N;i++){
            cin>>arr[i];
        }
    sort(arr, arr+N);
    int x=arr[0];

    int y=arr[N/2];
    int z=arr[N-1];
    int a=((abs(x-y)+abs(y-z)+abs(z-x)));
    cout<<a<<endl;
    }
return 0;
}