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
- 弗拉
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;
}