https://www.acmicpc.net/problem/1461
from bisect import bisect_left
N,M = map(int,input().split())
S = list(map(int,input().split()))
S.sort()
zeroidx = bisect_left(S,0)
S_minus = S[:zeroidx]
S_plus = S[zeroidx:]
ans = 0
ans_list = []
for i in range(len(S_minus)):
if i%M == 0:
ans_list.append(abs(S_minus[i]))
S_plus.sort(reverse=True)
for i in range(len(S_plus)):
if i%M == 0:
ans_list.append(S_plus[i])
print(2*sum(ans_list) - max(ans_list))
수열을 정렬한뒤 0을 기준으로 나눠준다.
그리고 M으로 나눴을때 나머지가 0인 값들만 저장해주고
저장한 거리 리스트를 두배한 값에서 가장 큰 값(왕복하지 않을 거리)를 뺀다.