Задание 17. Информатика. ЕГЭ. Поляков-4273

Просмотры: 169
Изменено: 24 ноября 2024

(В. Шубинкин) В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от \(-10~000\) до \(10~000\) включительно. Определите и запишите в ответе сначала количество локальных максимумов в этой последовательности, затем наименьшее расстояние между двумя локальными максимумами. Под локальным максимумом подразумевается элемент последовательности, больший двух соседних элементов. Под расстоянием между элементами последовательности в данной задаче подразумевается разность номеров позиций этих элементов. Гарантируется наличие хотя бы двух локальных максимумов. Например, в последовательности \(10; \, 4; \, 7; \, -2; \, -10; \, 12; \, 3; \, 5; \, -2\) три локальных максимума \((7, \, 12\) и \(5)\), поэтому правильным ответом для данного примера будет пара чисел \(3\) и \(2\).

Файл с данными

Решение:

C++


#include<iostream>
#include<fstream>
#include<vector>

using namespace std;

int32_t main() {
    ifstream in("17-1.txt");
    vector<int> v;
    int min_dist = 100000, prev_pos = -100000, loc_max = 0;

    while(!in.eof()) {
        int tmp;
        in >> tmp;
        v.push_back(tmp);
    }

    for(int i = 1; i < v.size() - 1; i++)
        if (v[i] > v[i-1] && v[i] > v[i+1]) {
            loc_max++;
            min_dist = min(i - prev_pos, min_dist);
            prev_pos = i;
        }

    cout << loc_max << " " << min_dist << '\n';
}

Ответ: \(3316 \,\, 2\)