Language: C++

import unittest
from io import StringIO
import sys
sys.setrecursionlimit(10 ** 5 + 10)


def input(): return sys.stdin.readline().strip()


def resolve():

    N, W = map(int, input().split())
    w, v = [0] * N, [0] * N
    for i in range(N):
        w[i], v[i] = map(int, input().split())
    # https://qiita.com/drken/items/dc53c683d6de8aeacf5a#dp-%E5%AE%9F%E8%A3%85%E3%81%AE%E9%A0%86%E5%BA%8F

    INF = 10**10  # INF+INFを計算してもオーバーフローしない範囲で大きく
    # dpテーブル dp[i][j]:= i番目までの荷物の中から重さj以下で選ぶ通り数
    dp = [[0]*(W+1) for _ in range(N+1)]
    """
    初期化の値は，
        最小化問題：INF, 
        最大化問題：-INF（0以上の値しか取らないなら-1, あるいは0でもいいかも)
        数え上げ問題：0
        確率問題：0
        Yes/No判定問題:False
    """

    # 初期条件
    # dp[0][0] = 0

    # ループ
    for typ in range(1, N+1):
        for weight in range(W+1):

            """
            dp[from] の値の更新が完了していればノード from からノード to への緩和を行っていい．貰うdpであれ配るdpであれ．
            両者の違いを意識すべきケースはcf. 
            https://qiita.com/drken/items/ace3142967c4f01d42e9#%E8%B2%B0%E3%81%86-dp-%E3%81%A8%E9%85%8D%E3%82%8B-dp-%E3%81%AE%E6%AF%94%E8%BC%83

            # 遷移式がたくさんある場合この中でさらにforループを回したりする cf. https://atcoder.jp/contests/dp/tasks/dp_b
            """
            # i番目選ぶ
            if weight-w[typ-1] >= 0:
                dp[typ][weight] = max(max(dp[typ][weight], dp[typ-1][weight-w[typ-1]]+v[typ-1]),dp[typ-1][weight])
            # 選ばない
            else:
                dp[typ][weight] = max(dp[typ][weight], dp[typ-1][weight])

    # 出力
    print(dp[N][W])


resolve()

Compiler output:
a.cc:16:7: error: invalid preprocessing directive #https
   16 |     # https://qiita.com/drken/items/dc53c683d6de8aeacf5a#dp-%E5%AE%9F%E8%A3%85%E3%81%AE%E9%A0%86%E5%BA%8F
      |       ^~~~~
a.cc:18:19: error: stray '#' in program
   18 |     INF = 10**10  # INF+INFを計算してもオーバーフローしない範囲で大きく
      |                   ^
a.cc:19:7: error: invalid preprocessing directive #dp\U000030c6\U000030fc\U000030d6\U000030eb
   19 |     # dpテーブル dp[i][j]:= i番目までの荷物の中から重さj以下で選ぶ通り数
      |       ^~~~~~~~~~
a.cc:21:7: warning: missing terminating " character
   21 |     """
      |       ^
a.cc:21:7: error: missing terminating " character
a.cc:28:7: warning: missing terminating " character
   28 |     """
      |       ^
a.cc:28:7: error: missing terminating " character
a.cc:30:7: error: invalid preprocessing directive #\U0000521d\U0000671f\U00006761\U00004ef6
   30 |     # 初期条件
      |       ^~~~~~~~
a.cc:31:7: error: invalid preprocessing directive #dp
   31 |     # dp[0][0] = 0
      |       ^~
a.cc:33:7: error: invalid preprocessing directive #\U000030eb\U000030fc\U000030d7
   33 |     # ループ
      |       ^~~~~~
a.cc:37:15: warning: missing terminating " character
   37 |             """
      |               ^
a.cc:37:15: error: missing terminating " character
a.cc:42:15: error: invalid preprocessing directive #\U00009077\U000079fb\U00005f0f\U0000304c\U0000305f\U0000304f\U00003055\U00003093\U00003042\U0000308b\U00005834\U00005408\U00003053\U0000306e\U00004e2d\U00003067\U00003055\U00003089\U0000306bfor\U000030eb\U000030fc\U000030d7\U00003092\U000056de\U00003057\U0000305f\U0000308a\U00003059\U0000308b
   42 |             # 遷移式がたくさんある場合この中でさらにforループを回したりする cf. https://atcoder.jp/contests/dp/tasks/dp_b
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc:43:15: warning: missing terminating " character
   43 |             """
      |               ^
a.cc:43:15: error: missing terminating " character
a.cc:44:15: error: invalid preprocessing directive #i\U0000756a\U000076ee\U00009078\U00003076
   44 |             # i番目選ぶ
      |               ^~~~~~~~~
a.cc:47:15: error: invalid preprocessing directive #\U00009078\U00003070\U0000306a\U00003044
   47 |             # 選ばない
      |               ^~~~~~~~
a.cc:51:7: error: invalid preprocessing directive #\U000051fa\U0000529b
   51 |     # 出力
      |       ^~~~
a.cc:1:1: error: 'import' does not name a type
    1 | import unittest
      | ^~~~~~
a.cc:1:1: note: C++20 'import' only available with '-fmodules-ts'