﻿#include <iostream>
#include <string>
#include <random>
using namespace std;

int main()
{
	// Русский язык
	setlocale(LC_ALL, "Rus");

	// Для генерациия случайных чисел
	random_device generator;
	uniform_int_distribution<int> rand_num(-1000, 1000);

	// Количество элементо в массиве
	int N = 0;
	cout << "Введите количество элементов массива: ";
	cin >> N;

	// Выделение памяти под массив с элементами
	int* arr = new int[N];

	// Самый первый по величине элемент
	int first_biggest_num = INT_MIN;
	// Номер самого первого по величине элемента
	int first_biggest_num_ind = -1;

	// Второй по величине элемент
	int second_biggest_num = INT_MIN;
	// Номер самого второго по величине элемента
	int second_biggest_num_ind = -1;

	// Заполнение массива случайными элементами
	for (int i = 0; i < N; i++)
	{
		// Заполнение случайным элементом
		arr[i] = rand_num(generator);

		if (arr[i] > first_biggest_num)
		{ // Если очередной элемент больше текущего самого большого...
			second_biggest_num = first_biggest_num;
			second_biggest_num_ind = first_biggest_num_ind;

			first_biggest_num = arr[i];
			first_biggest_num_ind = i + 1;
		}
		else if (arr[i] > second_biggest_num)
		{ // Если очередной элемент не больше текущего самого большого, но больше второго по величине...
			second_biggest_num = arr[i];
			second_biggest_num_ind = i + 1;
		}
	}

	// Вывод элементов массива
	cout << "Элементы сгенерированного массива:" << endl;
	for (int i = 0; i < N; i++)
	{
		cout << arr[i] << endl;
	}

	// Вывод информации о двух самых больших элементах и их номерах
	cout << "Первый по величине элемент в массиве: " << first_biggest_num << endl;
	cout << "Номер первого по величине элемента в массиве: " << first_biggest_num_ind << endl;
	cout << "Второй по величине элемент в массиве: " << second_biggest_num << endl;
	cout << "Номер второго по величине элемента в массиве: " << second_biggest_num_ind << endl;

	// Очищаем память, которую выделяли для массива
	delete[] arr;

	// Возвращаем 0, чтобы дать знать, программа отработала корректно, раз дошла до этого момента
	return 0;
}