結果
| 問題 | No.3268 As Seen in Toasters | 
| コンテスト | |
| ユーザー |  Iroha_3856 | 
| 提出日時 | 2025-09-12 22:11:18 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                RE
                                 
                             | 
| 実行時間 | - | 
| コード長 | 1,051 bytes | 
| コンパイル時間 | 282 ms | 
| コンパイル使用メモリ | 82,180 KB | 
| 実行使用メモリ | 68,900 KB | 
| 最終ジャッジ日時 | 2025-09-12 23:39:40 | 
| 合計ジャッジ時間 | 4,929 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge6 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | RE * 3 | 
| other | RE * 41 | 
ソースコード
from random import randint
from more_itertools import distinct_permutations
def f(x, y):
    if x < 0 and y < 0:
        return -x - y
    else:
        return abs(x-y)
def cost(A):
    ret = 0
    for i in range(len(A)-1):
        ret += f(A[i], A[i+1])
    return ret
    
# A = [randint(-10, 10) for i in range(8)]
# A = [117, 96, 102, 55, -104, -123, -108, 79, -131]
# mncost = 10**9
# for X in distinct_permutations(A):
#     if cost(X) < mncost:
#         mncost = cost(X)
# print(mncost)
# for X in distinct_permutations(A):
#     if cost(X) == mncost:
#         print(X)
N = int(input())
A = list(map(int, input().split()))
if min(A) >= 0:
    #普通に
    print(max(A) - min(A))
elif max(A) < 0:
    A.sort()
    ans = sum(-a for a in A)
    ans += A[0]
    ans += A[1]
    print(ans)
else:
    A.sort()
    #両端
    ans = 0
    if A[1] < 0:
        for a in A:
            if a < 0:
                ans += -2 * a
        ans += A[0]
        ans += A[1]
        ans += max(A) * 2
    #片方
    ans = min(ans, cost(A))
    print(ans)
            
            
            
        