Решение задачи Расстояние между максимумами с Acmp

Без пояснения   Просмотров: 44


Элемент последовательности называется локальным максимумом, если он строго больше предыдущего и последующего элемента последовательности. Первый и последний элемент последовательности не являются локальными максимумами.

Задана последовательность натуральных чисел, завершающаяся числом 0. Требуется определить наименьшее расстояние между двумя локальными максимумами последовательности натуральных чисел, завершающейся числом 0.

Код

#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
//    1 2 3 1 1  2 1 0
    int n;
    cin >> n;
    vector<int> a;
    while(n){
        a.push_back(n);
        cin >> n;
    }
    int pos = -1;
    for(int i = 1; i < a.size() - 1; ++i)
        if(a[i] > a[i - 1] && a[i] > a[i + 1]){
            pos = i;
            break;
        }
    int maxim = 101;
    if(pos > -1){
        bool b = false;
        for(int i = pos + 1; i < a.size() - 1; ++i)
            if(a[i] > a[i - 1] && a[i] > a[i + 1]){
                maxim = min(maxim, i - pos);
                pos = i;
                b = true;
            }
        if(b)
            cout << maxim;
        else
            cout << 0;
    }
    else
        cout << 0;
 
    return 0;
}

         

Администратор Photo Автор: Администратор




Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться