Submission #1290335

#TimeUsernameProblemLanguageResultExecution timeMemory
1290335HoriaHaivasPeru (RMI20_peru)C++20
0 / 100
1095 ms10484 KiB
#include<bits/stdc++.h>
#include "peru.h"
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
#pragma GCC optimize("Ofast")
#define int long long

using namespace std;

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

int range_rng(int l, int r)
{
    return uniform_int_distribution<int>(l,r)(rng);
}

int dp[2005];
int v[2005];
const int mod=1e9+7;

int lgpow(int x, int p)
{
    int ans,pw,i;
    ans=1;
    pw=x;
    for (i=0;i<30;i++)
    {
         if (p&(1<<i))
             ans=(ans*pw)%mod;
         pw=(pw*pw)%mod;
    }
    return ans;
}

int cost (int l, int r)
{
    int i,mx;
    mx=0;
    for (i=l;i<=r;i++)
    {
         mx=max(mx,v[i]);
    }
    return mx;
}

signed solve(signed N, signed K, signed* S)
{
    int n,k,i,j,ans;
    n=N;
    k=K;
    for (i=1;i<=n;i++)
    {
         v[i]=S[i-1];
    }
    ans=0;
    for (i=1;i<=n;i++)
    {
         dp[i]=1e18;
         for (j=i;j>=max(i-k+1,1LL);j--)
         {
              dp[i]=min(dp[i],dp[j-1]+cost(j,i));
         }
         ans+=(dp[i]*lgpow(23,n-i))%mod;
         ans%=mod;
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...