C++ 皮卡迪利广场(SPOJ)运行时错误犯罪

C++ 皮卡迪利广场(SPOJ)运行时错误犯罪,c++,C++,我已经为这个问题编写了如下代码 #include<iostream> using namespace std; int main() { int T=10; //int T=1; while(T--) { int p,k; cin>>p>>k; int n; cin>>n; int *A; int *B; A= new int[k+1]; B= new int[k+1]; for(int i=1;i<=k;i++) {A[i]=0;B

我已经为这个问题编写了如下代码

#include<iostream>

using namespace std;

int main()
{
int T=10;
//int T=1;
while(T--)
{
int p,k;
cin>>p>>k;
int n;
cin>>n;

int *A;
int *B;
A= new int[k+1];
B= new int[k+1];

for(int i=1;i<=k;i++)
{A[i]=0;B[i]=0;}
while(n--)
    {
    int start,end;
    cin>>start>>end;

    if(start<p && end>=p && end<k) {A[p]++;B[end]++;}
    else if(start<p && end>=k){A[p]++;B[k]++;}

    else if (start>=p && end <k){A[start]++;B[end]++;}
    else if(start>=p && end >=k){A[start]++;B[k]++;}

    }
int num=0;
int max=A[p]-B[p];
int min=A[p]-B[p];
for(int i=p;i<=k;i++)
{
num=num+A[i];
if(max<num)max=num;
if(min>num)min=num;
num=num-B[i];
}

cout<<min<<" "<<max<<endl;
}
return 0;
}
#包括
使用名称空间std;
int main()
{
int T=10;
//int T=1;
而(T--)
{
int p,k;
cin>>p>>k;
int n;
cin>>n;
int*A;
int*B;
A=新整数[k+1];
B=新整数[k+1];
对于(int i=1;i>开始>>结束;
如果(start=p&&end=p&&end=p&&end>=k){A[start]+;B[k]+;}
}
int num=0;
int max=A[p]-B[p];
int min=A[p]-B[p];

对于(int i=p;i在Mac上使用XCode 4.2.1,程序对于示例输入和预期输出运行良好。我粘贴了

5 10
4
1 8
5 8
7 10
8 9
得到

1 4

如果您遇到错误,请尝试使用调试器找出程序失败的确切位置。您使用的编译器是什么?

欢迎使用堆栈溢出。您能否向我们提供有关此问题的更多详细信息?您是否已将其缩小到程序的特定部分?是否已尝试将其分解为单独的函数,并进行分析g段代码,以确保每段代码都能按照您认为应该的方式工作?谢谢,先生。问题是,代码在我的机器上运行得非常好,带有示例测试用例和我编写的一些更高范围的输入。在我的机器上,我没有遇到任何运行时错误,因此无法调试代码。但是SPOJ报告了一个运行时错误。我ave尝试将数组更改为vector,以查看内存分配是否存在问题,但SPOJ再次报告相同的错误,因为它在我的机器上运行良好。谢谢!一种“远程”调试的方法可能是插入断言,让您确定程序能够到达的距离。或者在每次访问之前只断言每个索引。-您还可以使用
std::vector
替换动态数组,并使用
at
方法进行元素访问。这将可靠地通知您可能获得的越界访问在程序被调试后,你可以在中用<代码> []/COD>加速替换<代码>。尝试在每次测试用例之后删除数组A、B。我尝试过。仍然给出相同的错误。谢谢你的回复。我使用C++(g++4.3.2)。问题是我的计算机上没有收到任何错误,但SPOJ报告此运行时错误。