Calculate the minimum waiting time using a greedy algorithm. reference: https:www.youtube.comwatch?vSf3eiO12eJs For doctests run following command: python m doctest v minimumwaitingtime.py The minimumwaitingtime function uses a greedy algorithm to calculate the minimum time for queries to complete. It sorts the list in nondecreasing order, calculates the waiting time for each query by multiplying its position in the list with the sum of all remaining query times, and returns the total waiting time. A doctest ensures that the function produces the correct output. This function takes a list of query times and returns the minimum waiting time for all queries to be completed. Args: queries: A list of queries measured in picoseconds Returns: totalwaitingtime: Minimum waiting time measured in picoseconds Examples:  minimumwaitingtime3, 2, 1, 2, 6 17  minimumwaitingtime3, 2, 1 4  minimumwaitingtime1, 2, 3, 4 10  minimumwaitingtime5, 5, 5, 5 30  minimumwaitingtime 0
def minimum_waiting_time(queries: list[int]) -> int:
    """
    This function takes a list of query times and returns the minimum waiting time
    for all queries to be completed.

    Args:
        queries: A list of queries measured in picoseconds

    Returns:
        total_waiting_time: Minimum waiting time measured in picoseconds

    Examples:
    >>> minimum_waiting_time([3, 2, 1, 2, 6])
    17
    >>> minimum_waiting_time([3, 2, 1])
    4
    >>> minimum_waiting_time([1, 2, 3, 4])
    10
    >>> minimum_waiting_time([5, 5, 5, 5])
    30
    >>> minimum_waiting_time([])
    0
    """
    n = len(queries)
    if n in (0, 1):
        return 0
    return sum(query * (n - i - 1) for i, query in enumerate(sorted(queries)))


if __name__ == "__main__":
    import doctest

    doctest.testmod()
