제출 #1217954

#제출 시각아이디문제언어결과실행 시간메모리
1217954KindaGoodGamesPeru (RMI20_peru)C++20
18 / 100
1097 ms49492 KiB
#include "peru.h"
#include<bits/stdc++.h>
#define int long long

using namespace std;

int INF = numeric_limits<int>::max()/2;
int mod = 1e9+7;

int exp(int a, int k){
    if(k == 0) return 1;
    int res = exp(a,k/2);

    if(k % 2 == 0) return (res * res) % mod;
    return ((res*res% mod) * a )% mod;
}

int32_t solve(int32_t n, int32_t k, int32_t* S){
    vector<int> v(n);
    for(int i = 0; i < n; i++){
        v[i] = S[i];
    }
    vector<int> dp(n+1, INF);

    dp[0] = 0;

    int res = 0;

    for(int i = 1; i <= n; i++){
        int ma = 0;
        for(int p = i; p >= max(1LL, i-k+1LL); p--){
            ma = max(ma, v[p-1]);
            dp[i] = min(dp[i], dp[p-1]+ma);
        }
        res += ((dp[i]%mod) * exp(23, n-i))%mod;
        res %= mod;
    }
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...