結果
| 問題 | No.545 ママの大事な二人の子供 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2022-02-08 21:03:57 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 155 ms / 2,000 ms | 
| コード長 | 777 bytes | 
| コンパイル時間 | 232 ms | 
| コンパイル使用メモリ | 82,348 KB | 
| 実行使用メモリ | 87,732 KB | 
| 最終ジャッジ日時 | 2024-06-23 16:48:50 | 
| 合計ジャッジ時間 | 3,732 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 32 | 
ソースコード
import bisect
N = int(input())
lsAB = [tuple(map(int,input().split())) for i in range(N)]
# 半分列挙
l = lsAB[:N//2]
r = lsAB[N//2:]
lsl = []
Nl = N//2
for i in range(2**(Nl)):
    v1 = 0
    v2 = 0
    for j in range(Nl):
        if (i>>j)&1:
            v1 += l[j][0]
        else:
            v2 += l[j][1]
    lsl.append(v1-v2)
lsr = []
Nr = N-N//2
for i in range(2**(Nr)):
    v1 = 0
    v2 = 0
    for j in range(Nr):
        if (i>>j)&1:
            v1 += r[j][0]
        else:
            v2 += r[j][1]
    lsr.append(v1-v2)
lsl.sort()
lsr.sort()
lsr = [-float('INF')]+lsr+[float('INF')]
ans = float('INF')
for i in range(len(lsl)):
    v = -lsl[i]
    ind = bisect.bisect(lsr,v)
    k = min(abs(lsr[ind-1]-v),abs(lsr[ind]-v))
    ans = min(ans,k)
print(ans)
            
            
            
        