結果
問題 |
No.2918 Divide Applicants Fairly
|
ユーザー |
![]() |
提出日時 | 2024-10-10 12:20:25 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
RE
|
実行時間 | - |
コード長 | 741 bytes |
コンパイル時間 | 142 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 10,752 KB |
最終ジャッジ日時 | 2024-10-10 12:20:30 |
合計ジャッジ時間 | 4,513 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | RE * 3 |
other | RE * 61 |
ソースコード
from pulp import * N = int(input()) R = list(map(int, input().split())) prob = LpProblem(name="yukicoder_2918", sense=LpMinimize) X = [LpVariable(name="X"+str(i), cat=LpBinary) for i in range(N)] Y = [LpVariable(name="Y"+str(i), cat=LpBinary) for i in range(N)] M = 10 ** 8 zp = LpVariable(name="Zp", lowBound=0, cat=LpInteger) zm = LpVariable(name="Zm", lowBound=0, cat=LpInteger) z = LpVariable(name="Z", cat=LpBinary) prob += zp <= z * M prob += zm <= (1 - z) * M prob += zp + zm constraint = 0 for i in range(N): constraint += (X[i] - Y[i]) * R[i] prob += X[i] + Y[i] <= 1 prob += zp - zm == constraint prob += lpSum(X) >= 1 prob += lpSum(Y) >= 1 status = prob.solve(PULP_CBC_CMD(msg = False)) print(int(value(prob.objective)))