Submission #168530

#TimeUsernameProblemLanguageResultExecution timeMemory
168530muhammad_hokimiyonK blocks (IZhO14_blocks)C++14
0 / 100
7 ms1656 KiB
#include <bits/stdc++.h> #pragma GCC optimize("Ofast") #define fi first #define se second #define ll long long using namespace std; const int N = 1e6 + 7; const int mod = 1e9 + 7; int n,k; int a[N]; int d[111][N]; void solve() { cin >> n >> k; for( int i = 1; i <= n; i++ ){ cin >> a[i]; d[1][i] = max( d[1][i - 1] , a[i] ); } for( int i = 2; i <= k; i++ ){ d[i][i] = d[i - 1][i - 1] + a[i]; stack < pair < int , int > > st; st.push({d[i - 1][i - 1] , a[i]}); for( int j = i + 1; j <= n; j++ ){ int cnt = d[i - 1][j - 1]; while( !st.empty() && st.top().se <= a[j] ){ cnt = min( cnt , st.top().fi ); st.pop(); } if( st.empty() || st.top().fi + st.top().se <= cnt + a[j] ){ st.push({cnt , a[j]}); } d[i][j] = st.top().fi + st.top().se; } } cout << d[k][n]; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen( "input.txt" , "r" , stdin ); //freopen( "output.txt" , "w" , stdout ); int t = 1;//cin >> t; while( t-- ){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...