結果
| 問題 | 
                            No.370 道路の掃除
                             | 
                    
| コンテスト | |
| ユーザー | 
                             しらっ亭
                         | 
                    
| 提出日時 | 2016-05-13 22:42:06 | 
| 言語 | Python3  (3.13.1 + numpy 2.2.1 + scipy 1.14.1)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 31 ms / 2,000 ms | 
| コード長 | 920 bytes | 
| コンパイル時間 | 95 ms | 
| コンパイル使用メモリ | 12,672 KB | 
| 実行使用メモリ | 10,880 KB | 
| 最終ジャッジ日時 | 2024-10-14 16:43:56 | 
| 合計ジャッジ時間 | 1,970 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 34 | 
ソースコード
def solve():
    N, M = map(int, input().split())
    L = []
    R = []
    for i in range(M):
        d = int(input())
        if d == 0:
            N -= 1
        elif d >= 0:
            R.append(d)
        else:
            L.append(-d)
    L.sort()
    R.sort()
    ans = 1e9
    if N == 0:
        print(0)
        return
    for i in range(min(N, len(L))):
        l = L[i]
        if i == N - 1:
            ans = min(ans, l)
            continue
        ri = N - i - 2
        if len(R) > ri >= 0:
            r = R[N - i - 2]
            d = l * 2 + r
            ans = min(ans, d)
    for i in range(min(N, len(R))):
        r = R[i]
        if i == N - 1:
            ans = min(ans, r)
            continue
        li = N - i - 2
        if len(L) > li >= 0:
            l = L[N - i - 2]
            d = r * 2 + l
            ans = min(ans, d)
    print(ans)
if __name__ == '__main__':
    solve()
            
            
            
        
            
しらっ亭