#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int findMin(const vector<int>& v)
{
    int minValue = v[0];

    for (int i = 1; i < v.size(); i++)
    {
        if (v[i] < minValue)
            minValue = v[i];
    }

    return minValue;
}

void reverseVector(vector<int>& v)
{
    reverse(v.begin(), v.end());
}

void printVector(const vector<int>& v)
{
    for (int x : v)
        cout << x << " ";

    cout << endl;
}

int main()
{
    vector<int> numbers;

    int n;

    cout << "Enter number of elements: ";
    cin >> n;

    cout << "Enter elements:" << endl;

    for (int i = 0; i < n; i++)
    {
        int x;
        cin >> x;
        numbers.push_back(x);
    }

    cout << "\nVector elements (range-for): ";
    printVector(numbers);

    cout << "Vector elements (index): ";

    for (int i = 0; i < numbers.size(); i++)
        cout << numbers[i] << " ";

    cout << endl;

    if (!numbers.empty())
    {
        numbers.pop_back();

        cout << "\nAfter pop_back(): ";
        printVector(numbers);
    }

    if (!numbers.empty())
    {
        cout << "First element: "
             << numbers.front() << endl;

        cout << "Last element: "
             << numbers.back() << endl;
    }

    sort(numbers.begin(), numbers.end());

    cout << "\nSorted vector: ";
    printVector(numbers);

    cout << "Size = "
         << numbers.size() << endl;

    int value;

    cout << "\nEnter value to search: ";
    cin >> value;

    auto it = find(numbers.begin(),
                   numbers.end(),
                   value);

    if (it != numbers.end())
        cout << "Element found." << endl;
    else
        cout << "Element not found." << endl;

    cout << "\n===== TASK 2 =====" << endl;

    cout << "Minimum element = "
         << findMin(numbers)
         << endl;

    reverseVector(numbers);

    cout << "Reversed vector: ";
    printVector(numbers);

    numbers.clear();

    cout << "\nVector cleared." << endl;

    cout << "Size after clear = "
         << numbers.size()
         << endl;

    return 0;
}