Submission #1248387

#TimeUsernameProblemLanguageResultExecution timeMemory
1248387nguthianmangcayK blocks (IZhO14_blocks)C++20
0 / 100
0 ms328 KiB
#include<bits/stdc++.h> using namespace std; const int N=1e5+3; const int K=105; const int LG=20; const long long inf=1e18+3; #define ll long long #define fi first #define se second #define pi pair ll a[N]; ll dp[K][N]; int st[LG][20]; int get(int l,int r) { int len=__lg(r-l+1); return max(st[len][l],st[len][r-(1<<len)+1]); } void jiangly() { int n,k; cin>>n>>k; for(int i=1;i<=n;i++) { cin>>a[i]; st[0][i]=a[i]; } for(int i=1;i<=LG;i++) { for(int j=1;j+(1<<i)-1<=n;j++) { st[i][j]=max(st[i-1][j],st[i-1][j+(1<<(i-1))]); } } for(int i=0;i<=k;i++) { for(int j=1;j<=n;j++) { dp[i][j]=inf; } } dp[0][0]=0; dp[1][1]=1; for(int t=1;t<=k;t++) { ll ma=0; ll mndp=dp[t-1][t-1]; for(int i=t;i<=n;i++) { ma=max(ma,a[i]); dp[t][i]=dp[t-1][i-1]+a[i]; dp[t][i]=min(dp[t][i],mndp+ma); if(i!=n && dp[t-1][i]+a[i+1] < mndp + max(ma,a[i+1])) { mndp=dp[t-1][i]; } } } cout<<dp[k][n]; } int main() { cin.tie(0)->sync_with_stdio(0); if(fopen("QUANSENSEI.inp","r")) { freopen("O(0).inp","r",stdin); } jiangly(); }

Compilation message (stderr)

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