Submission #858446

#TimeUsernameProblemLanguageResultExecution timeMemory
858446DenkataPeru (RMI20_peru)C++14
100 / 100
366 ms109396 KiB
#include<bits/stdc++.h>
#include "peru.h"
//#include "grader.cpp"
using namespace std;
typedef long long ll;
const int maxn = 3e6+3;
const ll mod = 1e9+7;
struct Element
{
    ll val;
    ll mindp;
    ll curmin;
};
int solve(int N,int K,int *S)
{
    ll i,j,p,q,m,k,n,dp[maxn],ans=0,l[maxn],r[maxn],a[maxn],st[maxn];
    bool type[maxn];
    int otg;
    n = N;
    k = K;
    for(i=0;i<n;i++)
        a[i+1] = S[i];
    dp[0] = 0;
    for(i=1;i<=n;i++)
        dp[i] = LLONG_MAX;
    st[n-1] = 1;
    for(i=n-2;i>=0;i--)
        st[i] = (st[i+1]*23)%mod;

    deque <int> dq;
    multiset <ll> mt;

    for(i=1;i<=n;i++)
    {
        while(!dq.empty() && a[dq.back()]<=a[i])
        {
            p = a[dq.back()];
            dq.pop_back();
            if(!dq.empty())
            {
                p+=dp[dq.back()];
                mt.erase(mt.find(p));
            }
        }
        if(!dq.empty())
        {
            p = a[i]+dp[dq.back()];
            mt.insert(p);
        }
        dq.push_back(i);
        while(!dq.empty() && dq.front()<=i-k)
        {
            p = dp[dq.front()];
            dq.pop_front();
            if(!dq.empty())
            {
                p+=a[dq.front()];
                mt.erase(mt.find(p));
            }
        }
        if(!mt.empty())
            dp[i] = *mt.begin();
        dp[i] = min(dp[i],dp[max(0ll,i-k)]+a[dq.front()]);
    }




    for(i=1;i<=n;i++)
    {
       // cout<<i<<" "<<st[i-1]<<endl;
        dp[i] = dp[i]%mod;
        ans+=(dp[i]*1ll*st[i-1])%mod;
        ans%=mod;
    }
    otg = ans;
    return otg;
}

Compilation message (stderr)

peru.cpp: In function 'int solve(int, int, int*)':
peru.cpp:16:10: warning: unused variable 'j' [-Wunused-variable]
   16 |     ll i,j,p,q,m,k,n,dp[maxn],ans=0,l[maxn],r[maxn],a[maxn],st[maxn];
      |          ^
peru.cpp:16:14: warning: unused variable 'q' [-Wunused-variable]
   16 |     ll i,j,p,q,m,k,n,dp[maxn],ans=0,l[maxn],r[maxn],a[maxn],st[maxn];
      |              ^
peru.cpp:16:16: warning: unused variable 'm' [-Wunused-variable]
   16 |     ll i,j,p,q,m,k,n,dp[maxn],ans=0,l[maxn],r[maxn],a[maxn],st[maxn];
      |                ^
peru.cpp:16:37: warning: unused variable 'l' [-Wunused-variable]
   16 |     ll i,j,p,q,m,k,n,dp[maxn],ans=0,l[maxn],r[maxn],a[maxn],st[maxn];
      |                                     ^
peru.cpp:16:45: warning: unused variable 'r' [-Wunused-variable]
   16 |     ll i,j,p,q,m,k,n,dp[maxn],ans=0,l[maxn],r[maxn],a[maxn],st[maxn];
      |                                             ^
peru.cpp:17:10: warning: unused variable 'type' [-Wunused-variable]
   17 |     bool type[maxn];
      |          ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...