Submission #700217

#TimeUsernameProblemLanguageResultExecution timeMemory
700217kioto2K blocks (IZhO14_blocks)C++14
100 / 100
227 ms88720 KiB
#include<bits/stdc++.h> #define fori(i,a,b) for(int i=a;i<=b;i++) #define ford(i,a,b) for(int i=a;i>=b;i--) #define int long long using namespace std; const int N=1e5+10; int a[N],n,k,f[N][110]; int pre[110]; signed main() { cin.tie(0)->ios_base::sync_with_stdio(0); if(fopen("task.inp","r")) { freopen("task.inp","r",stdin); freopen("task.out","w",stdout); } cin>>n>>k; fori(i,1,n) cin>>a[i]; memset(f,50,sizeof(f)); f[0][1]=0; fori(i,1,n) f[i][1]=max(f[i-1][1],a[i]); fori(j,2,k) { stack<pair<int,int>> st; fori(i,j,n) { int cur=f[i-1][j-1]; while(!st.empty() && a[st.top().second]<=a[i]) { cur=min(cur,st.top().first); st.pop(); } f[i][j]=min(f[ (st.empty()?0:st.top().second) ][j],cur+a[i]); st.push({ cur,i }); } } cout<<f[n][k]; }

Compilation message (stderr)

blocks.cpp: In function 'int main()':
blocks.cpp:14:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |         freopen("task.inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
blocks.cpp:15:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |         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...