C语言 oj 平台 runtime error 求解

题:原文网址:http://vjudge.net/problem/viewProblem.action?id=19398
输入:先输入一个数N,后每组2个(代表x,y)输入N组数。(1<=N<=50)(-100<=x,y<=100)输入0结束。
输出:A,B使得Ax+By!=0,且Ax+By>0的数目与Ax+By<0的数目相同(-500<=A,B<=500)
如:
Sample Input

2
-20 20
-30 20
-10 -50
10 -5
0

Sample Output

0 1

我的代码:

#include<stdio.h>
#define MAXN 50+10
int main()
{
    int x[MAXN],y[MAXN],n;
do
{
    scanf("%d",&n);
    if(n==0)break;
            int i,j,k;
    for(i=0;i<2*n;i++)
        scanf("%d%d",&x[i],&y[i]);
    for(i=-500;i<=500;i++)
    {
        for(j=-500;j<=500;j++)
        {
            int ca=0,cb=0,ok=1;
            for(k=0;k<2*n;k++)
            {
                if(x[k]*i+y[k]*j==0){ok=0;break;}
                else if(x[k]*i+y[k]*j>0)ca++;
                else cb++;
            }
            if(ok && ca==cb){printf("%d %d\n",i,j);goto lp;}
        }
    }
lp:;
}while(n);
return 0;
}