제출 #1222293

#제출 시각아이디문제언어결과실행 시간메모리
1222293__moin__Peru (RMI20_peru)C++20
0 / 100
1094 ms20176 KiB
#include <bits/stdc++.h>
using namespace std;

#include "peru.h"

#define ll long long

const ll p = 1e9+7;

__int32_t solve(__int32_t n, __int32_t k, __int32_t* v){
    vector<int> dp(n);
    function<ll(int)> get = [&](int idx) {
        if (idx < 0) return 0ll;
        return (ll)dp[idx];
    };
    for (int i = 0; i < n; i++) {
        ll curmin = 1e18;
        ll runmax = v[i];
        for (int j = i-1; j >= i-k; j--) {
            curmin = min(curmin, (get(j) + runmax)%p);
            runmax = max(runmax, (ll)(j < 0 ? 0 : v[j]));
        }
        dp[i] = curmin;
    }
    ll factor = 1;
    ll res = 0;
    for (int i = n-1; i >= 0; i--) {
        res += (dp[i]*factor) % p;
        res %= p;
        factor *= 23;
        factor %= p;
    }
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...