Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
1.4 kB
2
Indexable
Never
class MemberCard:
    def __init__(self, name, age, cats, cat_names):
        self.name = name
        self.age = age
        self.cats = cats
        self.cat_names = cat_names


class HashTable:
    def __init__(self):
        self.index = []
        for i in range(20):
            self.index.append([])

    def get_hash(self, m: MemberCard, i):
        h = (m.age * m.cats + sum([len(m.cat_names[j]) for j in range(m.cats)])) % 20
        return h

    def add(self, m, i):
        hash_value = self.get_hash(m, i)

        while self.index[hash_value]:  # Проверяем, занята ли текущая ячейка
            hash_value = (hash_value + 1) % len(self.index)  # Переходим к следующей ячейке

        self.index[hash_value] = m  # Добавляем новый элемент в свободную ячейку



if __name__ == "__main__":
    n = int(input())
    h = HashTable()
    for i in range(n):
        inp = input().split()
        m = MemberCard(inp[0], int(inp[1]), int(inp[2]), inp[3:])
        h.add(m, i)
    # Когда вставка будет завершена, выведите через "\n" строки вида "<индекс в хэш-таблице> <имя члена клуба> <возраст члена клуба>".
    for i in range(len(h.index)):
        if h.index[i]:
            print(i, h.index[i].name, h.index[i].age)

Leave a Comment