gpt4 book ai didi

runtime - "Sigabrt Error"-Codechef

转载 作者:行者123 更新时间:2023-12-02 04:34:00 25 4
gpt4 key购买 nike

以下代码在我的 DEV-C++ 编译器中完美运行,但是当我在 codechef 中提交时,运行 3-4 秒后显示“SIGABRT ERROR”。我已经研究了这个错误并已尽我所能进行调试,但即使一周后我也无法做到。请帮忙 !!提前致谢。

引用问题是http://www.codechef.com/problems/LOWSUM

enter code here


void selsort(long long *ssum,long long len)
{
long long low;
for(long long i=0;i<len;i++)
{

low = ssum[i];
long long pos=i;
for(int j=i+1;j<len;j++)
{

if(ssum[j]<low)
{
low = ssum[j];
pos = j;

}

}


ssum[pos] = ssum[i];
ssum[i] = low;
}




}

int main()
{

int t,k,q;
cin>>t;

for(int i=0;i<t;++i)
{
cin>>k;
cin>>q;
long long sq = k*k;

long long *mot=NULL,*sat=NULL;
mot = new long long [k];
sat = new long long [k];
long long *sum = new long long[sq];
long long qth;
long long b=0;

for(int j=0;j<k;++j)
{
cin>>mot[j];

}

for(int j=0;j<k;++j)
{
cin>>sat[j];

}

for(int j=0;j<k;++j)
{
for(int a=0;a<k;++a)
{
sum[b] = mot[a]+sat[j];
++b;
}
}

selsort(sum,sq);


for(int j=0;j<q;++j)
{
cout<<"\n";
cin>>qth;
cout<<"\n"<<sum[qth-1];
}

delete []sum;
delete []mot;
delete []sat;
}

return 0;
}

最佳答案

由于多种原因发送 SIGABRT 信号,引用 codechef

SIGABRT errors are caused by your program aborting due to a fatal error. In C++, this is normally due to an assert statement in C++ not returning true, but some STL elements can generate this if they try to store too much memory.

在您的情况下,似乎使用了过多的内存

mot = new long long [k];
sat = new long long [k];
long long *sum = new long long[sq];

请注意,k 的值可以大到 20000,因此声明一个大小为 k 的数组就可以了,但是您的 sq = k*k 的数量级为 4*10^8导致内存不足问题。而且你的算法也不够好,无法在时限内给出AC。

Codechef 有自己的论坛来提出此类问题,并且已经在那里讨论了解决此问题的最佳方法

http://discuss.codechef.com/problems/LOWSUM

关于runtime - "Sigabrt Error"-Codechef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22415362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com