pta 1005 的最后一个测试点为什么通过不了?

#include
#define N 1000
#include
void IniliB(bool * b, int n)
{
int i;
for(i = 0;i<n;i++)
{
b[i] = false;
}
}

void Print_1(int *key, int n)
{
int i;

for(i = 0;i<n;i++)
{
    printf("%d", key[i]);
    if(i!= n-1)
    {
        printf(" ");
    }
}

}

void Rank_1(int *key, int n)
{
int i, j, t;

for(i = 0;i<n-1;i++)
{
    for(j = 0;j<n-i-1;j++)
    {
        if(key[i]<key[i+1])
        {
            t = key[i];
            key[i] = key[i+1];
            key[i+1] = t;
        }
    }
}

}
int main()
{
int a[100], key[N], i, k ,n;
bool b[N];
int j = 0;

scanf("%d", &n);

IniliB(b, N);

for(i= 0;i<n;i++)
{
    scanf("%d", &a[i]);
}


for(i = 0;i<n;i++)
{
    k = a[i];
    while(k!=1)
    {

        if(k%2 == 0)
        {
            k /= 2; 
        }
        else
        {
            k = (3*k + 1)/2;
        }
        b[k] = true;
    }
}

for(i = 0;i<n;i++)
{
    if(b[a[i]] == false)
    {
        key[j] = a[i];
        j++;
    }
}

Rank_1(key, j);
Print_1(key, j);
return 0;

}

void Rank_1(int *key, int n)
{
int i, j, t;

for(i = 0;i<n-1;i++)
{
for(j = 0;j<n-i-1;j++)
{
if(key[j]<key[j+1])
{
t = key[j];
key[j] = key[j+1];
key[j+1] = t;
}
}
}

}

https://blog.csdn.net/qq330214001/article/details/88354458