Решение задачи Удалите один элемент с Codeforces

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


Вам задан массив a, состоящий из n целых чисел.

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n, temp, res = 1;
    cin >> n;
    vector<int> a, r, l;
    for(int i = 0 ; i < n; ++i){
        cin >> temp;
        a.push_back(temp);
    }

    r.push_back(1);
    for(int i = 1; i < a.size(); ++i){
        if(a[i] > a[i - 1]){
            r.push_back(r[i - 1] + 1);
            if(r[r.size() - 1] > res)
                res = r[r.size() - 1];
        }
        else
            r.push_back(1);
    }

    reverse(a.begin(), a.end());

    l.push_back(1);
    for(int i = 1; i < a.size(); ++i){
        if(a[i] < a[i - 1])
            l.push_back(l[i - 1] + 1);
        else
            l.push_back(1);
    }
    reverse(a.begin(), a.end());
    reverse(l.begin(), l.end());

    for(int i = 1 ; i < r.size() - 1; ++i){
        if(a[i - 1 ] < a[i + 1]){
            if(r[i - 1] + l[i + 1] > res)
                res = r[i - 1] + l[i + 1];
        }
    }
    cout << res << endl;
//    21        2 4 2 5 4 2 5 4 6 3 2 1 4 4 4 56 1 2 3 4 4
//    for(auto i: r)
//        cout << i << " ";
//    cout << endl;
//
//    for(auto i: l)
//        cout << i << " ";
    return 0;
}

         

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



Комментарии

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