풀이1
- 각 책들의 좌표를 배열로 받아 저장한다.
- 현재 위치값 변수와 배열 안에 값 중 두 곳을 갔을 들렀을 때 가장 적은 거리가 나오는 값을 계산한다 배열을 돌며 계산한다.
- 배열을 오름차순으로 정렬하고
양수이면 가장 큰값부터 차례대로 들 수 있는 권수를 들고 옮긴다 이 때 옮기는 거리는 같이 든 책들 중 가장 큰값이다
- 음수도 똑같이 절대값이 가장 큰 순서대로 정렬하고 3번을 실행한다
- 권수가 남더라도 음수와 양수를 같이 들면 손해이다
n, m = map(int, input().split())
plusData = []
minusData = []
res = []
data = list(input().split())
for i in data:
if int(i) > 0:
plusData.append(int(i))
else:
minusData.append(int(i))
plusData.sort(reverse =True)
minusData.sort()
if plusData[0] > abs(minusData[0]):
for i in range(m):
if len(plusData) == 0:
break
if i == 0:
res.append(plusData[0])
del plusData[0]
if plusData[0] < abs(minusData[0]):
for i in range(m):
if len(minusData) == 0:
break
if i == 0:
res.append(abs(minusData[0]))
del minusData[0]
while True:
if len(plusData) == 0:
break
for i in range(m):
if len(plusData) == 0:
break
if i == 0:
res.append(plusData[0] * 2)
del(plusData[0])
while True:
if len(minusData) == 0:
break
for i in range(m):
if len(minusData) == 0:
break
if i == 0:
res.append(abs(minusData[0]) * 2)
del(minusData[0])
print(sum(res))