結果
問題 | No.595 登山 |
ユーザー | titia |
提出日時 | 2024-12-19 03:11:03 |
言語 | Python3 (3.12.2 + numpy 1.26.4 + scipy 1.12.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,021 bytes |
コンパイル時間 | 366 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 32,808 KB |
最終ジャッジ日時 | 2024-12-19 03:11:17 |
合計ジャッジ時間 | 13,600 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 32 ms
10,880 KB |
testcase_01 | AC | 33 ms
11,008 KB |
testcase_02 | AC | 33 ms
10,880 KB |
testcase_03 | AC | 34 ms
10,880 KB |
testcase_04 | WA | - |
testcase_05 | WA | - |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | WA | - |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | WA | - |
testcase_20 | WA | - |
testcase_21 | WA | - |
testcase_22 | WA | - |
testcase_23 | WA | - |
testcase_24 | AC | 33 ms
10,880 KB |
testcase_25 | AC | 32 ms
11,008 KB |
testcase_26 | AC | 804 ms
32,632 KB |
testcase_27 | AC | 742 ms
27,964 KB |
testcase_28 | AC | 777 ms
27,964 KB |
ソースコード
import sys input = sys.stdin.readline N,P=map(int,input().split()) A=list(map(int,input().split())) USE=[0]*N for i in range(1,N-1): if A[i-1]<=A[i]<=A[i+1]: USE[i]=1 if A[i-1]>=A[i]>=A[i+1]: USE[i]=1 B=[] for i in range(N): if USE[i]==0: B.append(A[i]) if len(B)>=2 and B[0]>=B[1]: B.pop(0) ANS=0 for i in range(0,len(B),2): if i+1<len(B): ANS+=min(B[i+1]-B[i],P) DP=[1<<63]*len(B) DP[0]=0 for i in range(1,len(B)): if i%2==0: if i-1>=0: DP[i]=min(DP[i],DP[i-1]+P) if i-2>=0: DP[i]=min(DP[i],DP[i-2]+B[i-1]-B[i-2]) DP[i]=min(DP[i],DP[i-2]+P) else: if i-1>=0: DP[i]=min(DP[i],DP[i-1]+P) if i-2>=0: DP[i]=min(DP[i],DP[i-2]+B[i-2]-B[i-1]) DP[i]=min(DP[i],DP[i-2]+P) ANS=DP[-1] if len(B)>=2: ANS=min(ANS,DP[-2]+P) if len(B)>=2: if len(B)%2==0: ANS=min(ANS,DP[-2]+B[-1]-B[-2]) else: ANS=min(ANS,DP[-2]) print(ANS)