結果
| 問題 | No.595 登山 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2017-11-11 23:04:23 | 
| 言語 | Java (openjdk 23) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 931 ms / 1,500 ms | 
| コード長 | 658 bytes | 
| コンパイル時間 | 3,890 ms | 
| コンパイル使用メモリ | 77,164 KB | 
| 実行使用メモリ | 59,924 KB | 
| 最終ジャッジ日時 | 2024-12-15 20:08:21 | 
| 合計ジャッジ時間 | 23,751 ms | 
| ジャッジサーバーID (参考情報) | judge2 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 25 | 
ソースコード
package yukicoder;
import java.util.*;
public class P595 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		long P = sc.nextLong();
		long[] H = new long[N];
		for(int i=0; i<N; i++) {
			H[i] = sc.nextLong();
		}
		long[] dpr = new long[N];
		long[] dpl = new long[N];
		dpl[0] = 1000000000;
		for(int i=1; i<N; i++) {
			dpr[i] = Math.min(Math.min(dpr[i-1], dpl[i-1])+P, dpr[i-1]+Math.max(0, H[i]-H[i-1]));
			dpl[i] = Math.min(Math.min(dpr[i-1], dpl[i-1])+P, dpl[i-1]+Math.max(0, H[i-1]-H[i]));
		}
		System.out.println(Math.min(dpr[N-1], dpl[N-1]));
	}
}
            
            
            
        