結果
問題 |
No.595 登山
|
ユーザー |
![]() |
提出日時 | 2025-08-23 17:47:56 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 985 bytes |
コンパイル時間 | 1,299 ms |
コンパイル使用メモリ | 165,728 KB |
実行使用メモリ | 11,780 KB |
最終ジャッジ日時 | 2025-08-23 17:47:59 |
合計ジャッジ時間 | 3,215 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 5 WA * 20 |
ソースコード
#include<bits/stdc++.h> #define int long long using namespace std; const int N=1000010; const int mod=998244353; typedef long long ll; int n,m,p; int a[N]; int dp[N]; vector<pair<int,int> >v; signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen("even.in","r",stdin); // freopen("even.out","w",stdout); cin>>n>>p; for(int i=1;i<=n;i++)cin>>a[i]; int pre=1; for(int i=1;i<=n;i++){ if(i>1&&a[i]<a[i-1]){ v.push_back(make_pair(pre,i-1)); pre=i; } } v.push_back(make_pair(pre,n)); m=v.size(); for(int i=0;i<m-1;i++){ int l=v[i].first; int r=v[i].second; if(l==r){ dp[i+1]=dp[i]; continue; } if(l+1==r){ dp[i+1]=min(dp[i]+a[r]-a[l],dp[i]+p); continue; } dp[i+1]=min(dp[i]+a[r]-a[l],dp[i]+2*p); } int l=v.back().first; int r=v.back().second; if(l==r){ cout<<dp[m-1]<<"\n"; return 0; } if(l+1==r){ cout<<dp[m-1]+min(a[r]-a[l],p)<<"\n"; return 0; } cout<<dp[m-1]+min(a[r]-a[l],p)<<"\n"; return 0; } /* */