結果

問題 No.837 Noelちゃんと星々2
ユーザー tcltk
提出日時 2021-01-19 02:09:41
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,265 bytes
コンパイル時間 495 ms
コンパイル使用メモリ 82,096 KB
実行使用メモリ 112,172 KB
最終ジャッジ日時 2024-12-15 02:17:44
合計ジャッジ時間 7,651 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 12 WA * 17
権限があれば一括ダウンロードができます

ソースコード

diff #

#region Header
#!/usr/bin/env python3
# from typing import *

import sys
import io
import math
import collections
import decimal
import itertools
from queue import PriorityQueue
import bisect
import heapq

def input():
    return sys.stdin.readline()[:-1]

sys.setrecursionlimit(1000000)
#endregion

# _INPUT = """5
# 0 1 6 7 8
# """
# sys.stdin = io.StringIO(_INPUT)


def main():
    N = int(input())
    Y = sorted(list(map(int, input().split())))

    # 累積和
    S = [0]
    for i in range(N):
        S.append(S[-1] + Y[i])

    d_min = 10**10
    for k in range(1, N):
        # Y[:k] と Y[k:] に分割
        i1 = (k-1)//2
        y1 = Y[i1]
        i2 = k + (N-k-1)//2
        y2 = Y[i2]
        if y1 == y2:
            d = 1
        else:
            # d1 = sum(y1 - Y[i] for i in range(0, i1)) + sum(Y[i] - y1 for i in range(i1, k))
            # d2 = sum(y2 - Y[i] for i in range(k, i2)) + sum(Y[i] - y2 for i in range(i2, N))
            d1 = (y1 * i1 - S[i1]) + (S[k] - S[i1] - y1 * (k - i1))
            d2 = (y2 * (i2 - k) - (S[i2] - S[k])) + (S[N] - S[i2] - y2 * (N - i2))
            d = d1 + d2
        d_min = min(d_min, d)

    print(d_min)

if __name__ == '__main__':
    main()
0