from typing import List, Tuple
def find_two_largest(numbers: List[int]) -> Tuple[int, int]:
"""
Find the largest and second-largest elements in a list.
Args:
numbers: A list of integers.
Returns:
A tuple containing:
(largest, second_largest)
Raises:
ValueError: If the list contains fewer than two elements.
"""
if len(numbers) < 2:
raise ValueError("The list must contain at least two elements.")
largest = float("-inf")
second_largest = float("-inf")
for value in numbers:
# Found a new largest value
if value > largest:
second_largest = largest
largest = value
# Update second largest if needed
elif value > second_largest:
second_largest = value
return largest, second_largest
def main() -> None:
numbers: List[int] = [3, 4, 9, 6, 7, 1, 2, 5]
largest, second_largest = find_two_largest(numbers)
print(f"List: {numbers}")
print(f"Largest element: {largest}")
print(f"Second largest element: {second_largest}")
if __name__ == "__main__":
main()
'''
run:
List: [3, 4, 9, 6, 7, 1, 2, 5]
Largest element: 9
Second largest element: 7
'''