如何解决如何在以下代码中纠正SIGABERT错误?
问题陈述: 和尚站在他教室的门口。目前有N名学生在课堂上,我的学生有Ai糖果。 还有M个学生要来。每一刻,一个学生进入班级,并希望与拥有完全相同数量的糖果的学生坐在一起。对于每个学生,和尚都喊“是”(如果找到这样的学生),否则“否”。
输入: 第一行包含一个整数T。 每种情况的第一行均包含两个以空格分隔的整数N和M。 第二行包含N + M个空格分隔的整数,即学生的糖果。
输出: 对于每个测试用例,输出M个新行,即Monk对M个学生的答案。 打印与和尚的答案有关的“是”(不带引号)或“否”(不带引号)。
约束: 1≤T≤10 1≤N,M≤105 0≤Ai≤1012
样品输入 1个 2 3 3 2 9 11 2 样品输出 没有 没有 是 说明 最初有3和2个糖果的学生上课。 有9个糖果的学生进入,课堂上没有9个糖果的学生进入。因此,“否” 有11个糖果的学生进入,课堂上没有11个糖果的学生进入。因此,“否” 有2个糖果的学生进入,在课堂上发现2个糖果的学生。因此,“是” 我的代码:
#include<iostream>
using namespace std;
class node
{
public:
node *left;
node *right;
long long int value;
node()
{
left=NULL;
right=NULL;
value=0;
}
node (long long int v)
{
value=v;
left=NULL;
right=NULL;
}
};
class bst
{
public:
long long int m;
long long int n;
long long int *a=new long long int[m];
node *root;
bst()
{
root=NULL;
}
void insert(node *n1,long long int key)
{
if (root==NULL)
{
root=n1;
}
else
{
node *temp=root;
while(temp!=NULL)
{
if(temp->value==n1->value)
{
if (key>=n)
{
a[key-n]=1;
}
return;
}
//cout<<"out\n";
else if((temp->value > n1->value )&& (temp->left==NULL))
{
temp->left=n1;
if (key>=n)
{
a[key-n]=0;
}
return ;
}
//cout<<"out\n";
else if(temp->value > n1->value)
{
temp=temp->left;
}
//cout<<"out\n";
else if((temp->value < n1->value )&& (temp->right==NULL))
{
temp->right=n1;
if (key>=n)
{
a[key-n]=0;
}
return ;
}
//cout<<"out\n";
else
{
temp=temp->right;
}
}
}
}
void check()
{
for (long long int i=0;i<m;i++)
{
if (a[i]==0)
{
cout<<"NO\n";
}
if (a[i]==1)
{
cout<<"YES\n";
}
}
}
};
int main()
{
long long int t;
cin>>t;
bst b[t];
for (long long int i=0;i<t;i++)
{
long long int m,n;
cin>>n>>m;
b[i].m=m;
b[i].n=n;
for (long long int j=0;j<(m+n);j++)
{
node *n1=new node();
long long int c;
cin>>c;
n1->value=c;
b[i].insert(n1,j);
}
}
for (long long int i=0;i<t;i++)
{
b[i].check();
}
}
我已经通过了示例测试用例,但是由于SIGABRT而无法通过私有测试用例。请帮助我纠正此错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。