def smallest_owner_set(authors, total, size=0.5):
    """ Smallest set of authors owning more than half of project files. 

    :param authors: author_number_of_files_owned() output
    :param total: total_number_of_files_by_project() output
    :return: (number of members in smallest set, smallest set)
    :rtype: tuple
    """
    items = sorted(authors.items(), key=lambda k_v: k_v[1], reverse=True)
    threshold = round(total * size)
    agg = 0
    members = []
    member_count = 0
    for k, v in items:
        if agg <= threshold:
            members.append((k, v))
            member_count += 1
            agg += v
        else:
            break
    return member_count, members
