結果

問題 No.1150 シュークリームゲーム(Easy)
ユーザー smallcopsesmallcopse
提出日時 2020-08-07 22:38:08
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 62 ms / 2,000 ms
コード長 1,131 bytes
コンパイル時間 87 ms
コンパイル使用メモリ 12,004 KB
実行使用メモリ 21,160 KB
最終ジャッジ日時 2023-10-25 03:20:43
合計ジャッジ時間 3,693 ms
ジャッジサーバーID
(参考情報)
judge11 / judge14
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 29 ms
10,180 KB
testcase_01 AC 31 ms
10,180 KB
testcase_02 AC 30 ms
10,180 KB
testcase_03 AC 29 ms
10,180 KB
testcase_04 AC 29 ms
10,180 KB
testcase_05 AC 29 ms
10,180 KB
testcase_06 AC 29 ms
10,180 KB
testcase_07 AC 29 ms
10,180 KB
testcase_08 AC 29 ms
10,180 KB
testcase_09 AC 29 ms
10,180 KB
testcase_10 AC 28 ms
10,180 KB
testcase_11 AC 29 ms
10,180 KB
testcase_12 AC 29 ms
10,180 KB
testcase_13 AC 28 ms
10,180 KB
testcase_14 AC 28 ms
10,180 KB
testcase_15 AC 29 ms
10,180 KB
testcase_16 AC 29 ms
10,180 KB
testcase_17 AC 29 ms
10,184 KB
testcase_18 AC 29 ms
10,184 KB
testcase_19 AC 29 ms
10,184 KB
testcase_20 AC 29 ms
10,184 KB
testcase_21 AC 29 ms
10,184 KB
testcase_22 AC 58 ms
19,384 KB
testcase_23 AC 57 ms
19,720 KB
testcase_24 AC 56 ms
19,128 KB
testcase_25 AC 55 ms
19,432 KB
testcase_26 AC 60 ms
20,200 KB
testcase_27 AC 59 ms
20,592 KB
testcase_28 AC 61 ms
21,160 KB
testcase_29 AC 57 ms
19,148 KB
testcase_30 AC 60 ms
19,916 KB
testcase_31 AC 57 ms
19,720 KB
testcase_32 AC 55 ms
19,440 KB
testcase_33 AC 58 ms
20,016 KB
testcase_34 AC 60 ms
20,208 KB
testcase_35 AC 61 ms
20,584 KB
testcase_36 AC 62 ms
20,760 KB
testcase_37 AC 62 ms
20,856 KB
testcase_38 AC 55 ms
19,196 KB
testcase_39 AC 55 ms
19,424 KB
testcase_40 AC 57 ms
19,884 KB
testcase_41 AC 62 ms
20,632 KB
testcase_42 AC 55 ms
16,980 KB
testcase_43 AC 56 ms
16,980 KB
testcase_44 AC 62 ms
20,908 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

def main():
    N = int(input())
    s, t = map(int, input().split())
    A = list(map(int, input().split()))

    # 分かりやすいように、s < tで考える
    if t < s:
        A = A[::-1]
        s = N - s + 1
        t = N - t + 1

    s -= 1
    t -= 1
    X = A[s]
    Y = A[t]
    # print(X, Y)

    # 残り部分その1
    A1 = A[s+1:t]
    # 残り部分その2
    A2 = A[t+1:] + A[:s]
    A2 = A2[::-1]
    N1 = len(A1)
    N2 = len(A2)
    # print(A1)
    # print(A2)
    # 最善を尽くした場合、残り部分を半分ずつ取り合うしかない
    # ただし、残り部分が両方とも奇数個の場合、中央の数が大きいほうを315側は取ろうとするはず

    X += sum(A1[:N1//2]) + sum(A2[:N2//2])
    Y += sum(A1[N1-(N1//2):]) + sum(A2[N2-(N2//2):])
    # print(X, Y)

    rest = []
    if N1 % 2 == 1:
        rest.append(A1[N1 // 2])
    if N2 % 2 == 1:
        rest.append(A2[N2 // 2])
    rest.sort()
    if len(rest) >= 1:
        X += rest[-1]
    if len(rest) == 2:
        Y += rest[0]

    # print(X, Y)
    print(X - Y)
    

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