c语言 设计一个找出同数值部分排列的程序

定义一行的整数的输入有相同连续的地方为“同数值部分排列”
找出有最长的同数值部分排列,并输出排列长度及这个数字的程序。
最长的同数值部分排列有两个以上的时候,输出最后那个。
输入的数字用空格或者换行区别

例1
输入:
0 1 1 1 2 0 0
输出:
3 1

例2
输入:
1 1 1 3
1 2 2
2
3
输出:
3 2

 #include <stdio.h>

int main()
{
    int x;
    int c = 0;
    int px = -1;
    int maxv = -1;
    int maxc = 0;
    while (scanf("%d", &x) != EOF)
    {
        if (x == px)
            c++;
        else
            c = 1;
        if (c >= maxc)
        {
            maxc = c;
            maxv = x;
        }
        px = x;
    }
    printf("%d %d", maxc, maxv);
    return 0;
}

1 1 1 3
1 2 2
2 3
^Z
3 2Press any key to continue

其实还好这道题,用一个二维数组,第二纬度直接存改点出线的次数,然后遍历一遍找出出线次数最多且数最大的即可