제출 #1356791

#제출 시각아이디문제언어결과실행 시간메모리
1356791coin_Safety (NOI18_safety)C++20
7 / 100
2095 ms327680 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int inf = 1e18;

signed main(){
    int n, h;
    cin >> n >> h;
    int maxH = 5005;
    vector<vector<int>> dp(n+5, vector<int>(maxH, inf));
    vector<int> a(n);
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int hi = 0; hi < maxH; hi++){
        dp[0][hi] = abs(a[0] - hi);
    }
    for (int i = 1; i < n; i++){
        for (int hi = 0; hi < maxH; hi++){
            int gain = inf;
            for (int j = max(0LL, hi - h); j <= min(hi + h, maxH-1); j++){
                gain = min(dp[i-1][j], gain);
            }
            dp[i][hi] = min(dp[i][hi], abs(a[i] - hi) + gain);
        }
    }
    int ans = inf;
    for (int i = 0; i < maxH; i++){
        ans = min(ans, dp[n-1][i]);
    }
    cout << ans;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…