提出 #68048186


ソースコード 拡げる

import sys
import heapq
from typing import List, Tuple


def get_max_earnings(n: int, d: int, jobs: List[Tuple[int, int]]) -> int:
    """
    最大収益を計算する関数

    Parameters:
    - n: int - 仕事の数
    - d: int - 就業可能日数
    - jobs: List[Tuple[int, int]] - 各仕事の情報 (開始日Xi, 報酬Yi)

    Returns:
    - int - 得られる最大報酬の合計
    """

    # 各日ごとの仕事リストに分類
    job_by_day: List[List[int]] = [[] for _ in range(d + 1)]
    for x, y in jobs:
        if x <= d:
            job_by_day[x].append(y)

    # 最大ヒープ(heapqで負値にして使用)
    max_heap: List[int] = []
    total: int = 0

    for day in range(1, d + 1):
        # 今日から可能な仕事をヒープに追加
        for reward in job_by_day[day]:
            heapq.heappush(max_heap, -reward)  # 最大ヒープのためマイナス

        # 今日やるべき最大報酬の仕事を選択
        if max_heap:
            total += -heapq.heappop(max_heap)

    return total


def main() -> None:
    """
    標準入力からデータを受け取り、最大収益を出力するメイン関数
    """

    input_data = sys.stdin.read().strip().split('\n')
    n, d = map(int, input_data[0].split())
    jobs: List[Tuple[int, int]] = [tuple(map(int, line.split())) for line in input_data[1:]]

    result: int = get_max_earnings(n, d, jobs)
    print(result)


if __name__ == "__main__":
    main()

提出情報

提出日時
問題 B39 - Taro's Job
ユーザ myoshizumi
言語 Python (CPython 3.11.4)
得点 1000
コード長 1538 Byte
結果 AC
実行時間 176 ms
メモリ 60012 KiB

ジャッジ結果

セット名 Sample Subtask1 All
得点 / 配点 0 / 0 200 / 200 800 / 800
結果
AC × 1
AC × 11
AC × 17
セット名 テストケース
Sample sample_01.txt
Subtask1 sample_01.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt
All rand_01.txt, rand_02.txt, rand_03.txt, rand_04.txt, rand_05.txt, rand_06.txt, sample_01.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt
ケース名 結果 実行時間 メモリ
rand_01.txt AC 131 ms 46760 KiB
rand_02.txt AC 89 ms 33108 KiB
rand_03.txt AC 94 ms 34396 KiB
rand_04.txt AC 61 ms 24912 KiB
rand_05.txt AC 64 ms 26372 KiB
rand_06.txt AC 176 ms 60012 KiB
sample_01.txt AC 19 ms 10688 KiB
subtask1_01.txt AC 20 ms 10976 KiB
subtask1_02.txt AC 20 ms 10904 KiB
subtask1_03.txt AC 20 ms 11128 KiB
subtask1_04.txt AC 19 ms 10844 KiB
subtask1_05.txt AC 19 ms 11104 KiB
subtask1_06.txt AC 19 ms 10988 KiB
subtask1_07.txt AC 20 ms 11204 KiB
subtask1_08.txt AC 20 ms 10992 KiB
subtask1_09.txt AC 21 ms 11292 KiB
subtask1_10.txt AC 19 ms 10880 KiB