PAT Basic Level 1005(继续3n+1猜想) 测试点4(C语言)显示答案错误,求指导

如题,代码如下

#include <stdio.h>

int f(int x);

int main()
{
    int K;
    scanf("%d", &K);
    int input[K], i;
    for(i = 0; i<K; i++){
        scanf("%d", &input[i]);
    } 
    int state[K];//记录各个输入数据的状态,仅当state = 0时输出该数据 
    for(i=0; i<K; i++){
        state[i] = 0;
    }
    for(i=0; i<K; i++){
        if(state[i] == 0){
            int x = input[i];
            while(x != 1){
                x = f(x);
                int j;
                for(j = 0; j<K; j++){
                    if(input[j] == x){
                        state[j]++;//若数据input[i]被其他数据覆盖,则state[i]++ 
                    }
                }
            }
        } 
    }
    int output[K], count = 0;
    for(i=0; i<K; i++){
        if(state[i] == 0){
            output[count] = input[i];//输出未被覆盖数据 
            count++;
        }
    }
    int k, max, t;//下面为数据大小排序及输出 
    for(k = (count-1); k>=0; k--){
        max = output[0];
        t = 0;
        for(i=1; i<= k; i++){
            if(output[i] > max){
                max = output[i];
                t = i;
            }
        }
        int c = output[k];
        output[k] = max;
        output[t] = c;
    } 
    for(i=0; i< count; i++){
        printf("%d", output[count-1-i]);
        if(i<(count-1)){
            printf(" ");
        }
    }
    printf("\n");
    
    return 0;
} 

int f(int x){
    int ret;
    if(x%2){
        ret = 3*x+1;
    }else{
        ret = x/2;
    }
    return ret;
}