Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <vector>
- #define ULL unsigned long long
- #define UINT unsigned int
- #define DIFF(x, y) (((x) > (y)) ? ((x) - (y)) : ((y) - (x)))
- int main(void) {
- ULL n;
- scanf("%llu", &n);
- std::vector<std::vector<ULL>> dp(n, std::vector<ULL>(2));
- for (UINT i = 0; i < n; i++) {
- scanf("%llu", &dp[i][0]);
- }
- dp[0][1] = 0ULL;
- dp[1][1] = DIFF(dp[0][0], dp[1][0]);
- for (UINT i = 2; i < n; i++) {
- dp[i][1] = std::min(dp[i - 1][1] + DIFF(dp[i][0], dp[i - 1][0]), dp[i - 2][0] + (3 * DIFF(dp[i][0], dp[i - 2][0])));
- }
- printf("%llu\n", dp[n - 1][1]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement