結果
| 問題 |
No.1150 シュークリームゲーム(Easy)
|
| コンテスト | |
| ユーザー |
uni_python
|
| 提出日時 | 2020-08-10 00:23:25 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 87 ms / 2,000 ms |
| コード長 | 1,444 bytes |
| コンパイル時間 | 226 ms |
| コンパイル使用メモリ | 82,304 KB |
| 実行使用メモリ | 91,200 KB |
| 最終ジャッジ日時 | 2024-10-05 23:34:05 |
| 合計ジャッジ時間 | 4,155 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 43 |
ソースコード
import sys
input=sys.stdin.readline
def I(): return int(input())
def MI(): return map(int, input().split())
def LI(): return list(map(int, input().split()))
def main():
mod=10**9+7
N=I()
s,t=MI()
s-=1
t-=1
A=LI()
S=sum(A)
rev=0
if s>t:
s,t=t,s
rev=1# この時,Xが後手
L1=A[s+1:t]
L2=A[t+1:] + A[:s]
l1=len(L1)
l2=len(L2)
X=A[s]
for i in range(l1//2):
X+=L1[i]
for i in range(l2//2):
X+=L2[-1-i]
def calc(a,b):
aa=abs(a-b)
bb=N-aa
return min(aa,bb)
if l1%2==0 and l2%2==0:
pass
elif l1%2==1 and l2%2==1:
#両方奇数なら,sとtから同じ距離の2つのうち,大きい方をとれる
temp=[]
for i in range(N):
ls=calc(i,s)
lt=calc(i,t)
if ls==lt:
temp.append(A[i])
if (rev):
X+=min(temp)
else:
X+=max(temp)
else:
#片方が奇数なら,sとtから同じ距離のやつをとれる
if not(rev):
for i in range(N):
ls=calc(i,s)
lt=calc(i,t)
if ls==lt:
X+=A[i]
break
Y=S-X
if not rev:
print(X-Y)
else:
print(Y-X)
main()
uni_python