Submission #494231

#TimeUsernameProblemLanguageResultExecution timeMemory
494231emortlyPeru (RMI20_peru)C++14
0 / 100
1 ms340 KiB
#include<bits/stdc++.h> using namespace std; struct q{ int end,a,dp; }; int solve(int n,int k,int* s){ int a[n+1]={}; for(int i=1;i<=n;i++)a[i]=s[i-1]; long long dp[n+1]={}; deque<q>d; multiset<long long>st; for(int i=1;i<=n;i++){ d.push_back(q{i+k,a[i],dp[i-1]}); st.insert({0ll+a[i]+dp[i-1]}); while(!d.empty()&&d.front().end<=i){ st.erase(st.find(0ll+d.front().a+d.front().dp)); d.pop_front(); } /*vector<q>vec; while(!d.empty()&&d.front().a<a[i]){ q dd=d.front(); d.pop_front(); st.erase(st.find(0ll+dd.a+dd.dp)); q ddd=q{dd.end,a[i],dd.dp}; st.insert(0ll+ddd.a+ddd.dp); vec.push_back(ddd); } reverse(vec.begin(),vec.end()); for(auto e:vec)d.push_front(e); //cout<<d.size()<<"\n"; dp[i]=*st.begin();*/ } //for(int i=1;i<=n;i++)cout<<dp[i]<<" ";cout<<"\n"; long long res=0; long long pow23=1; const int MOD=1e9+7; for(int i=n;i>=1;i--)res+=1ll*dp[i]*pow23,res%=MOD,pow23*=23,pow23%=MOD; return res; } /*signed main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,k; cin>>n>>k; int a[n]; for(auto&i:a)cin>>i; cout<<solve(n,k,a)<<"\n"; }*/

Compilation message (stderr)

peru.cpp: In function 'int solve(int, int, int*)':
peru.cpp:15:38: warning: narrowing conversion of 'dp[(i - 1)]' from 'long long int' to 'int' [-Wnarrowing]
   15 |         d.push_back(q{i+k,a[i],dp[i-1]});
      |                                ~~~~~~^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...