Задача №112296. Самая длинная цепочка Напишите программу, которая находит в массиве самую длинную цепочку одинаковых элементов. Программа должна вывести значение элемента, который встречается наибольшее число раз подряд, и длину этой цепочки. Если в массиве есть несколько цепочек максимальной длины, нужно вывести данные по первой из них.
Входные данные
Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива. Гарантируется, что 3 < N ≤ 10000 .
Выходные данные
Программа должна вывести два числа через пробел: значение элемента массива, который встречается наибольшее число раз подряд, и длину этой цепочки.
Примеры
входные данные
7
1 2 2 1 1 1 3
выходные данные
1 3
НА С++!!
Для начала, создадим переменные для хранения текущего элемента и максимальной длины цепочки. Изначально установим их значениями первого элемента массива:
```cpp
int currentElement = array[0];
int maxLength = 1;
```
Затем пройдемся по всем элементам массива с помощью цикла, начиная со второго элемента:
```cpp
for (int i = 1; i < N; i++) {
```
Для каждого элемента будем проверять, равен ли он предыдущему элементу. Если равен, значит, мы находимся в цепочке одинаковых элементов и увеличиваем длину цепочки:
```cpp
if (array[i] == array[i-1]) {
length++;
```
Если же элемент не равен предыдущему, значит, цепочка оборвалась. В этом случае проверяем, является ли текущая длина цепочки максимальной. Если да, то обновляем максимальную длину и текущий элемент:
```cpp
} else {
if (length > maxLength) {
maxLength = length;
currentElement = array[i-1];
}
length = 1;
}
```
После цикла проверяем длину последней цепочки, так как она может быть максимальной. Если да, то также обновляем максимальную длину и текущий элемент:
```cpp
if (length > maxLength) {
maxLength = length;
currentElement = array[N-1];
}
```
Наконец, выводим результаты на экран:
```cpp
cout << currentElement << " " << maxLength << endl;
```
Вот полный код программы:
```cpp
#include
using namespace std;
int main() {
int N;
cin >> N;
int array[N];
for (int i = 0; i < N; i++) {
cin >> array[i];
}
int currentElement = array[0];
int maxLength = 1;
int length = 1;
for (int i = 1; i < N; i++) {
if (array[i] == array[i-1]) {
length++;
} else {
if (length > maxLength) {
maxLength = length;
currentElement = array[i-1];
}
length = 1;
}
}
if (length > maxLength) {
maxLength = length;
currentElement = array[N-1];
}
cout << currentElement << " " << maxLength << endl;
return 0;
}
```
Надеюсь, это поможет вам понять, как решить данную задачу. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.