Submission #1123430

#TimeUsernameProblemLanguageResultExecution timeMemory
1123430VinhLuuK blocks (IZhO14_blocks)C++20
100 / 100
121 ms4504 KiB
#include <bits/stdc++.h> //#define int long long #define ll long long #define all(lpv) lpv.begin(), lpv.end() #define fi first #define se second #define pot(x, y) lower_bound(x.begin(), x.end(), y) - x.begin() + 1 using namespace std; typedef pair<int,int> pii; const int N = 1e5 + 5; const int mod = 1e9 + 7; int n, kw; ll a[N], pf[N], mx[N], f[2][N]; signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define task "v" if(fopen(task ".inp","r")){ freopen(task ".inp","r",stdin); freopen(task ".out","w",stdout); } cin >> n >> kw; for(int i = 1; i <= n; i ++) { cin >> a[i]; } int pre = 0, nx = 1; ll _tmp = 0; for(int i = 1; i <= n; i ++) { _tmp = max(_tmp, a[i]); f[pre][i] = _tmp; } pf[0] = 1e16; for(int k = 2; k <= kw; k ++) { stack<int> st; for(int i = k; i <= n; i ++) { mx[i] = f[pre][i - 1]; while(!st.empty() && a[st.top()] <= a[i]) { mx[i] = min(mx[i], mx[st.top()]); st.pop(); } int last = (!st.empty() ? st.top() : 0); pf[i] = min(mx[i] + a[i], pf[last]); f[nx][i] = pf[i]; st.push(i); } swap(pre, nx); } cout << f[pre][n]; }

Compilation message (stderr)

blocks.cpp: In function 'int main()':
blocks.cpp:21:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |     freopen(task ".inp","r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
blocks.cpp:22:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   22 |     freopen(task ".out","w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...