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