#include <iostream>
#include <vector>
#include <limits>
#include <stdexcept>
/*
Finds the two largest elements in a vector.
Parameters:
numbers - Input vector
Returns:
A pair containing:
- first -> largest element
- second -> second largest element
*/
std::pair<int, int> findTwoLargest(const std::vector<int>& numbers)
{
if (numbers.size() < 2) {
throw std::invalid_argument(
"Vector must contain at least two elements."
);
}
int largest = std::numeric_limits<int>::min();
int secondLargest = std::numeric_limits<int>::min();
for (int value : numbers)
{
if (value > largest) {
secondLargest = largest;
largest = value;
}
else if (value > secondLargest) {
secondLargest = value;
}
}
return {largest, secondLargest};
}
int main()
{
std::vector<int> numbers = {3, 4, 9, 6, 7, 1, 2, 5};
auto [largest, secondLargest] = findTwoLargest(numbers);
std::cout << "Vector: ";
for (int value : numbers) {
std::cout << value << ' ';
}
std::cout << "\nLargest element: " << largest << '\n';
std::cout << "Second largest element: " << secondLargest << '\n';
}
/*
run:
Vector: 3 4 9 6 7 1 2 5
Largest element: 9
Second largest element: 7
*/