제출 #754349

#제출 시각아이디문제언어결과실행 시간메모리
754349komalrajputtrootechProgramming Contest (POI11_pro)Cpython 3
0 / 100
285 ms24908 KiB
import sys
import time


def solve_team_programming_contest(n, m, r, t, k, pairs):
    # Create a list of contestants with their available problems and penalty

    pairs = sorted(pairs, reverse=True)
    # print("pairs", len(pairs))
    unique_second_values = set()
    result = []

    for pair in pairs:
        if pair[1] not in unique_second_values:
            unique_second_values.add(pair[1])
            result.append(pair)

    grouped_dict = {}
    for ele in result:
        if grouped_dict.get(ele[0]):
            val = grouped_dict.get(ele[0])
            val.append(ele[1])
            grouped_dict.update({ele[0]: val})
        else:
            grouped_dict.update({ele[0]: [ele[1]]})

    contenstants = [[key, grouped_dict[key]] for key in sorted(grouped_dict.keys())]
    # contestants = [[] for _ in range(n)]
    # code.interact(local=dict(globals(), **locals()))
    # for index, ele in enumerate(result):
    #     contestants[index].append(ele[1])

    # Sort the problems for each contestant based on penalty
    # for i in range(n):
        # contestants[i].sort(key=lambda x: (r, x), reverse=True)
        # contestants[i]
    # print("contestants", contestants)

    solved_problems = 0
    penal_points = 0
    assignments = []

    # Assign problems to contestants
    for i in range(len(contenstants)):
        time = 0
        for problem in contenstants[i][1]:
            if time + r <= t:
                solved_problems += 1
                penal_points += time
                assignments.append((contenstants[i][0], problem, time))
                time += r
            else:
                break
    penal_points = t - penal_points
    assignments.sort(key=lambda x: x[2])
    return solved_problems, penal_points, assignments


# Read input
# n, m, r, t, k = map(int, input().split())
n, m, r, t, k = map(int, sys.stdin.readline().split())
# pairs = [list(map(int, input().split())) for _ in range(k)]
pairs = [list(map(int, sys.stdin.readline().split())) for _ in range(k)]
start = time.time()
# Solve the problem
result = solve_team_programming_contest(n, m, r, t, k, pairs)

# Print the result
print(result[0], result[1])
# print("result 2", result[2])
# print(*result[2], sep=",")
for assignment in result[2]:
    print(*assignment)
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...