結果
| 問題 | No.2918 Divide Applicants Fairly |
| ユーザー |
H20
|
| 提出日時 | 2024-10-08 01:29:41 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 980 bytes |
| コンパイル時間 | 369 ms |
| コンパイル使用メモリ | 81,600 KB |
| 実行使用メモリ | 599,124 KB |
| 最終ジャッジ日時 | 2024-10-08 01:29:46 |
| 合計ジャッジ時間 | 4,140 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | MLE * 1 -- * 60 |
ソースコード
import bisect
N = int(input())
R = list(map(int, input().split()))
FR,SR = R[:N//2],R[N//2:]
FRSB = [set() for _ in range(22)]
SRSB = [set() for _ in range(22)]
for fr in FR:
for i in reversed(range(21)):
for frsl in list(FRSB[i]):
FRSB[i+1].add(frsl+fr)
FRSB[i+1].add(frsl-fr)
FRSB[0].add(fr)
FRSB[0].add(-fr)
for sr in SR:
for i in reversed(range(21)):
for srsl in list(SRSB[i]):
SRSB[i+1].add(srsl+sr)
SRSB[i+1].add(srsl-sr)
SRSB[0].add(sr)
SRSB[0].add(-sr)
ans = 10**18
for k in range(21):
FRS = sorted(FRSB[k])
SRS = sorted(SRSB[k])
for frs in FRS:
i = bisect.bisect_left(SRS,frs)
if 0<i:
ans = min(ans,frs-SRS[i-1])
if i<len(SRS)-1:
ans = min(ans,SRS[i]-frs)
if k%2==0:
for i,j in zip(FRS,FRS[1:]):
ans = min(ans,j-i)
for i,j in zip(SRS,SRS[1:]):
ans = min(ans,j-i)
print(ans)
H20