给出一个N个整数的序列。

给出一个N个整数的序列。我们称高原是这个序列中几个(至少两个)连续元素的子序列,它们具有相同的价值。例如,序列2、4、4、7、3、3、3有两个高原:一个由两个元素组成,另一个由三个元素组成。

找到高原的数量,以及最大和最小的高原中的元素数量。

输入
第一行包含数值N(1≤N≤100000)。第二行包含了序列的元素--不超过106个模数的整数。

输出
输出三个用空格隔开的数字:高原的数量,以及最大和最小的高原中的元素数量。如果没有发现高原反应,则输出三个零。


#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int arr[n];
    for (int i = 0; i < n; i++)
    {
        cin >> arr[i];
    }
    int cnt = 0, max = 0, min = n + 1;
    for (int i = 0; i < n - 1; i++)
    {
        if (arr[i] == arr[i + 1]){
            int j = i + 1;
            for (; j < n; j++){
                if (arr[j] != arr[i]){
                    cnt++;
                    if (j - i > max)
                        max = j - i;
                    if (j - i < min)
                        min = j - i;
                    i = j - 1;
                    break;
                }
            }
            if (j == n){
                cnt ++;
                if (j - i > max)
                    max = j - i;
                if (j - i < min)
                    min = j - i;
                break;
            }
        }
    }
    if(min == n + 1) min = 0;
    cout << cnt << " " << max << " " << min << endl;
    return 0;
}

这是输出和输入的格式

输入:
7
2 4 4 7 3 3 3
输出:
2 3 2

输入:
10
10 6 4 1 5 2 -3 7 0
输出:
0 0 0

输入:3
3 3 3
输出:
1 3 3