結果
| 問題 |
No.1150 シュークリームゲーム(Easy)
|
| コンテスト | |
| ユーザー |
smallcopse
|
| 提出日時 | 2020-08-07 22:38:08 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 66 ms / 2,000 ms |
| コード長 | 1,131 bytes |
| コンパイル時間 | 416 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 21,744 KB |
| 最終ジャッジ日時 | 2024-09-24 22:50:34 |
| 合計ジャッジ時間 | 4,087 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 43 |
ソースコード
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()
smallcopse