結果

問題 No.1792 科学の甲子園
ユーザー qwewe
提出日時 2025-05-14 13:04:30
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 3,152 bytes
コンパイル時間 273 ms
コンパイル使用メモリ 82,304 KB
実行使用メモリ 75,648 KB
最終ジャッジ日時 2025-05-14 13:06:31
合計ジャッジ時間 6,871 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 8 TLE * 1 -- * 17
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
import itertools

# Function to solve the problem
def solve():
    # Read the number of students N from standard input.
    N = int(sys.stdin.readline())
    
    # Read the aptitude values for each student.
    # Store the student data as a list of lists, where each inner list contains
    # the 6 aptitude values for one student.
    students = []
    for i in range(N):
        # Read a line, split it into space-separated values, convert them to integers,
        # and append the resulting list of 6 integers to the students list.
        students.append(list(map(int, sys.stdin.readline().split())))

    # Initialize the variable to keep track of the maximum score found so far.
    # Start with 0, as scores are products of positive integers and will be >= 1.
    max_score = 0
    
    # Generate all possible combinations of 4 distinct student indices from the range [0, N-1].
    # itertools.combinations is an efficient way to generate combinations.
    # It takes an iterable (here, range(N)) and the size of combinations (here, 4).
    # It yields tuples, each containing 4 distinct indices in increasing order.
    for team_indices in itertools.combinations(range(N), 4):
        # For each combination of 4 students (a potential team):
        
        # Calculate the score for the current team. Initialize the score to 1.
        # The score is the product of maximum aptitudes over all subjects.
        current_score = 1 
        
        # Iterate through each of the 6 subjects (indexed 0 to 5).
        for subject in range(6): 
            # Find the maximum aptitude value for the current subject among the selected 4 students.
            max_subj_score = 0 # Initialize the max score for this subject within the team.
            
            # Iterate through the indices of the students in the current team combination.
            for student_idx in team_indices:
                # Access the aptitude value of the student 'student_idx' for the current 'subject'.
                # students[student_idx] gets the list of scores for the student.
                # students[student_idx][subject] gets the score for the specific subject.
                # Update max_subj_score if the current student's score is higher.
                max_subj_score = max(max_subj_score, students[student_idx][subject])
            
            # Multiply the team's total score by the maximum aptitude found for this subject.
            # Since all aptitude values are guaranteed to be at least 1, the maximum aptitude
            # for any subject will also be at least 1. Thus, current_score will remain positive.
            current_score *= max_subj_score
            
        # After calculating the total score for the current team, compare it with the
        # overall maximum score found so far (max_score). Update max_score if the
        # current team's score is greater.
        max_score = max(max_score, current_score)

    # After checking all possible teams of 4 students, print the overall maximum score found.
    print(max_score)

# Call the solve function to execute the main logic of the program.
solve()
0