結果
問題 |
No.1522 Unfairness
|
ユーザー |
![]() |
提出日時 | 2025-06-12 16:15:22 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,061 bytes |
コンパイル時間 | 187 ms |
コンパイル使用メモリ | 82,768 KB |
実行使用メモリ | 52,352 KB |
最終ジャッジ日時 | 2025-06-12 16:15:56 |
合計ジャッジ時間 | 3,834 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | TLE * 1 -- * 26 |
ソースコード
def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]); idx +=1 M = int(input[idx]); idx +=1 A = list(map(int, input[idx:idx+N])) A.sort(reverse=True) k_max = N // 2 INF = float('inf') dp = [[ -INF for _ in range(M+1)] for __ in range(k_max +1)] dp[0][0] = 0 for i in range(N-1): a = A[i] b = A[i+1] d = a - b for j in range(k_max, -1, -1): for curr_d in range(M+1): if dp[j][curr_d] == -INF: continue if j < k_max and curr_d + d <= M: new_d = curr_d + d new_j = j +1 new_sum = dp[j][curr_d] + a if new_sum > dp[new_j][new_d]: dp[new_j][new_d] = new_sum i +=1 max_sum = 0 for j in range(k_max +1): for d in range(M+1): if dp[j][d] > max_sum and j*2 <= N: max_sum = dp[j][d] print(max_sum) if __name__ == '__main__': main()