結果

問題 No.595 登山
ユーザー vjudge1
提出日時 2025-08-23 13:37:53
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 91 ms / 1,500 ms
コード長 818 bytes
コンパイル時間 1,964 ms
コンパイル使用メモリ 194,360 KB
実行使用メモリ 14,524 KB
最終ジャッジ日時 2025-08-23 13:37:59
合計ジャッジ時間 4,924 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 25
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
#define int long long
#define FAST ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
using namespace std;
/*
?????
??
by qqqaaazzz
 
f[i][0/1] ?? i?????????????????????? 
*/
int n,p;
int a[500010];
int f[500010][2];
 
signed main()
{
    cin >> n >> p;
    for (int i=1;i<=n;i++) cin >> a[i];
    memset(f,0x3f,sizeof(f));
    f[1][1] = 0;
    f[1][0] = p;
    for (int i=1;i<=n;i++){
        //?? i+1
        for (int j=0;j<2;j++){
            //?? i+1??????
            int bonus = (j==1? max(0ll,a[i+1]-a[i]):max(0ll,a[i]-a[i+1]));
            f[i+1][j] = min(f[i+1][j],f[i][j]+bonus);
            //??? i+1??????
            f[i+1][0] = min(f[i+1][0],f[i][j]+p);
            f[i+1][1] = min(f[i+1][1],f[i][j]+p); 
        } 
    }
    cout << min(f[n][0],f[n][1]) << "\n";
    return 0;
}
0