Submission #671950

#TimeUsernameProblemLanguageResultExecution timeMemory
671950smartmonkyK blocks (IZhO14_blocks)C++14
100 / 100
176 ms42716 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define pb push_back #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() using namespace std; const int N = 1e5 + 50; int dp[105][N]; main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); memset(dp, 0x3f3f, sizeof(dp)); int n, k; cin >> n >> k; vector <int> v(n + 1); for(int i = 1; i <= n; i++){ cin >> v[i]; } dp[1][0] = -1e9; for(int i = 1; i <= n; i++)dp[1][i] = max(v[i], dp[1][i - 1]); for(int i = 2; i <= k; i++){ deque <pair <int,int> > d; for(int j = i; j <= n; j++){ int prev = dp[i - 1][j - 1]; while(!d.empty() && d.front().ff <= v[j]){ prev = min(d.front().ss, prev); d.pop_front(); } if(d.empty() || prev + v[j] < d.front().ff + d.front().ss){ d.push_front({v[j], prev}); } dp[i][j] = d.front().ff + d.front().ss; } } cout << dp[k][n]; }

Compilation message (stderr)

blocks.cpp:12:4: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   12 |    main(){
      |    ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...