제출 #1297063

#제출 시각아이디문제언어결과실행 시간메모리
1297063ThunnusPeru (RMI20_peru)C++20
18 / 100
1097 ms49240 KiB
#include "peru.h" #include<bits/stdc++.h> using namespace std; using i64 = long long; //#define int i64 #define vi vector<int> #define vvi vector<vi> #define vb vector<bool> #define se second #define fi first #define pii pair<int, int> #define sz(x) (int)(x).size() const int MOD = 1e9 + 7; const int B = 23; const int MAXN = 25e5 + 5; i64 pw[MAXN]; inline int hashx(int n, vector<i64> &x){ int ret = 0; for(int i = 0; i < n; i++){ //cout << "i: " << i << " x: " << x[i] << "\n"; x[i] %= MOD; i64 val = (x[i] * pw[n - 1 - i]) % MOD; ret = (ret + val) % MOD; } return ret; } int solve(int n, int k, int *s){ pw[0] = 1; for(int i = 1; i <= n; i++){ pw[i] = (pw[i - 1] * B) % MOD; } vector<i64> dp(n); dp[0] = s[0]; for(int i = 1; i < k; i++){ dp[i] = max(dp[i - 1], (i64)s[i]); } for(int i = k; i < n; i++){ int mx = s[i]; dp[i] = LLONG_MAX; for(int j = i - 1; j >= max(i - k, 0); j--){ dp[i] = min(dp[i], dp[j] + mx); mx = max(mx, s[j]); } } return hashx(n, dp); } /* signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n, k; cin >> n >> k; int s[n]; for(int i = 0; i < n; i++){ cin >> s[i]; } cout << solve(n, k, s) << "\n"; return 0; } */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...