请大佬帮看看怎么改,OJ运行错误

Yzz定义奇偶性相同或|x-y|=1则称他们为“Active pair” 
给定一个有n(n为偶数)个元素的有序数组a(从小到大排序),请问是否能有一种划分方式,使得n/2对元素互为“Active pair” 
例: a = [11,12,14,16]  < 11 12 > ,< 14 16 > 

输入

第一行有一个正整数t,表示有t组数据
接下来的每组数据占两行 
第一行输入一个正整数n,表示这个有序数组a的长度为n 
接下来输入n个整数 
(1<=t<=100,2<=n<=105 , Σn<=1e5 , 1<=ai<=1e9 ) 

输出

如果存在这样的划分方式那么输出"Yes"(不含引号),如果没有输出"No"(不含引号)

样例输入1Copy

2
2
4 9
8
2 3 3 6 8 10 10 10

样例输出1Copy

No
Yes

#include<stdio.h>
#include<math.h>
int a[100005];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int i,n,x=0,y=0,z,sum=0,flag=0;
        scanf("%d",&n);
        int b[100005];
        int c[100005];
        int d[100005];
       for(i=0;i<n;i++)
        scanf("%d",&a[i]);
       for(i=0;i<n;i++)
       {
           if(a[i]%2!=0)
            {
                b[x]=a[i];
                x++;
            }
            else
            {
                c[y]=a[i];
                y++;
            }
       }
       if(x%2!=0&&y%2!=0)
       {
           for(i=0;i<x;i++)
           {
               for(z=0;z<y;z++)
               {
                   d[sum]=abs(b[i]-c[z]);
                   sum++;
               }

           }
       }
       for(i=0;i<sum;i++)
       {
           if(d[i]==1)
            flag=1;
            break;
       }
       if(x%2==0&&y%2==0||flag==1)
        printf("Yes\n");
       else
        printf("No\n");
    }
    return 0;
}
我的思路是先把数组分为一个奇数组一个偶数组,两个数组要是下标相同输出YES,下标都为奇数只要其中元素相减为1就输出YES

这是完整代码

#include<stdio.h>
#include<string.h>
#include<math.h>
int a[100005];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int i,n,x=0,y=0,z,sum=0,flag=0;
        scanf("%d",&n);
        int b[100005];
        int c[100005];
        int d[100005];
        memset(b,0,sizeof(b));
        memset(c,0,sizeof(c));
        memset(d,0,sizeof(d));
       for(i=0;i<n;i++)
        scanf("%d",&a[i]);
       for(i=0;i<n;i++)
       {
           if(a[i]%2!=0)
            {
                b[x]=a[i];
                x++;
            }
            else
            {
                c[y]=a[i];
                y++;
            }
       }
       if(x%2!=0&&y%2!=0)
       {
           for(i=0;i<x;i++)
           {
               for(z=0;z<y;z++)
               {
                   d[sum]=abs(b[i]-c[z]);
                   sum++;
               }

           }
       }
       for(i=0;i<sum;i++)
       {
           if(d[i]==1)
            flag=1;
            break;
       }
       if(x%2==0||y%2==0||flag==1)
        printf("Yes\n");
       else
        printf("No\n");
    }
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^