Алдабергенов Руслан Даниярович, 411 PokeMon 7994
Абдикашева Вилена Ринатовна, 411 группа PokeMon 8070
n1def process_input():n1def handle_input():
2    players = {}2    player_data = {}
3    decks = {}3    deck_data = {}
4    while True:4    while True:
n5        inp = input()n5        line = input()
6        if not inp:6        if not line:
7            break7            break
n8        parse_input(inp, players, decks)n8        process_line(line, player_data, deck_data)
9    return (players, decks)9    return (player_data, deck_data)
1010
n11def parse_input(line, players, decks):n11def process_line(line, player_data, deck_data):
12    part1part2 = line.split(' / ')12    first, second = line.split(' / ')
13    if part1.isdigit():13    if first.isdigit():
14        add_card_to_deck(part1, part2, decks)14        store_card_in_deck(first, second, deck_data)
15    else:15    else:
n16        add_deck_to_player(part1, part2, players)n16        assign_deck_to_player(first, second, player_data)
1717
n18def add_card_to_deck(deck_num, card_name, decks):n18def store_card_in_deck(deck_id, card_name, deck_data):
19    if deck_num not in decks:19    if deck_id not in deck_data:
20        decks[deck_num] = set()20        deck_data[deck_id] = set()
21    decks[deck_num].add(card_name)21    deck_data[deck_id].add(card_name)
2222
n23def add_deck_to_player(player_name, deck_num, players):n23def assign_deck_to_player(player_name, deck_id, player_data):
24    if player_name not in players:24    if player_name not in player_data:
25        players[player_name] = set()25        player_data[player_name] = set()
26    players[player_name].add(deck_num)26    player_data[player_name].add(deck_id)
2727
n28def find_largest_pack(players, decks):n28def identify_largest_pack(player_data, deck_data):
29    max_size = 029    largest_pack = 0
30    result = []30    top_players = []
31    for player, player_decks in players.items():31    for player, decks in player_data.items():
32        unique_cards = gather_unique_cards(player_decks, decks)32        unique_cards = collect_unique_cards(decks, deck_data)
33        pack_size = len(unique_cards)33        current_pack_size = len(unique_cards)
34        if pack_size > max_size:34        if current_pack_size > largest_pack:
35            max_size = pack_size35            largest_pack = current_pack_size
36            result = [player]36            top_players = [player]
37        elif pack_size == max_size:37        elif current_pack_size == largest_pack:
38            result.append(player)38            top_players.append(player)
39    return sorted(result)39    return sorted(top_players)
4040
n41def gather_unique_cards(player_decks, decks):n41def collect_unique_cards(player_decks, deck_data):
42    unique_cards = set()42    all_cards = set()
43    for deck in player_decks:43    for deck in player_decks:
n44        if deck in decks:n44        if deck in deck_data:
45            unique_cards.update(decks[deck])45            all_cards.update(deck_data[deck])
46    return unique_cards46    return all_cards
4747
t48def main():t48def run_program():
49    players, decks = process_input()49    player_data, deck_data = handle_input()
50    result = find_largest_pack(players, decks)50    top_players = identify_largest_pack(player_data, deck_data)
51    for name in result:51    for player in top_players:
52        print(name)52        print(player)
53main()53run_program()
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op