제출 #553516

#제출 시각아이디문제언어결과실행 시간메모리
553516andrei_boaca수열 (APIO14_sequence)C++17
50 / 100
2060 ms68836 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll n,k,v[100005],s[100005]; ll dp[10005][205],from[10005][205]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin>>n>>k; k++; for(int i=1;i<=n;i++) { cin>>v[i]; s[i]=s[i-1]+v[i]; } for(int i=1;i<=k;i++) dp[0][i]=1e17; dp[0][0]=0; for(int i=1;i<=n;i++) { dp[i][0]=1e17; for(ll j=1;j<=k;j++) { dp[i][j]=1e17; for(ll l=i-1;l>=0;l--) { ll val=dp[l][j-1]+(s[i]-s[l])*(s[i]-s[l]); dp[i][j]=min(dp[i][j],val); if(dp[i][j]==val) from[i][j]=l; } } } ll ans=dp[n][k]; ans=s[n]*s[n]-ans; ans/=2; cout<<ans<<'\n'; ll i=n; ll j=k; vector<ll> sol; while(i>0) { ll x=from[i][j]; if(x>0) sol.push_back(x); i=x; j--; } reverse(sol.begin(),sol.end()); for(int i:sol) cout<<i<<' '; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...