제출 #1133621

#제출 시각아이디문제언어결과실행 시간메모리
1133621altern23오렌지 출하 (JOI16_ho_t1)C++20
100 / 100
26 ms656 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize ("O2") #pragma GCC optimize ("unroll-loops") #define ll long long #define pii pair<ll,ll> #define fi first #define sec second #define ld long double template <typename T> ostream& operator << (ostream& os, vector<T>tmp){ os << "["; for(auto x : tmp) os << " " << x; os << " ]"; return os; } template <typename T> ostream& operator << (ostream& os, set<T>tmp){ os << "["; for(auto x : tmp) os << " " << x; os << " ]"; return os; } template <typename T> ostream& operator << (ostream& os, multiset<T>tmp){ os << "["; for(auto x : tmp) os << " " << x; os << " ]"; return os; } ostream& operator << (ostream& os, pii x){ os << "["; os << " " << x.fi << " " << x.sec; os << " ]"; return os; } const ll MOD = 1e9 + 7; const ll N = 2e5 + 5; const ll INF = 2e18; // modulo operations void add(ll &a, ll b) { a = (a + b) % MOD; } void sub(ll &a, ll b) { a -= b; while(a < 0) a += MOD; a %= MOD; } void mul(ll &a, ll b) { a = (a * b) % MOD; } ll expo(ll a, ll b) { ll ans = 1; while(b > 0){ if(b & 1) mul(ans, a); mul(a, a); b /= 2; } return ans; } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int tc = 1; // cin >> tc; for(;tc--;){ ll n, m, k; cin >> n >> m >> k; vector<ll>a(n + 5); for(int i = 1; i <= n; i++) cin >> a[i]; vector<ll> dp(n + 5, INF); dp[0] = 0; for(ll i = 1; i <= n; i++){ ll mx = a[i], mn = a[i]; for(ll j = i; j >= max(1LL, i - m + 1); j--){ mx = max(mx, a[j]), mn = min(mn, a[j]); dp[i] = min(dp[i], dp[j - 1] + k + (mx - mn) * (i - j + 1)); } } cout << dp[n] << "\n"; } } /* */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...