제출 #33643

#제출 시각아이디문제언어결과실행 시간메모리
33643dqhungdlSplit the sequence (APIO14_sequence)C++14
0 / 100
0 ms1840 KiB
#include <bits/stdc++.h>
using namespace std;

int64_t n,k,a[100005],f[100005][205],Trace[100005][205];
vector<int64_t> rs;

int main()
{
    ios_base::sync_with_stdio(false);
    //freopen("TEST.INP","r",stdin);
    cin>>n>>k;
    k++;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        a[i]+=a[i-1];
    }
    for(int i=0;i<=n;i++)
        for(int j=0;j<=k;j++)
            f[i][j]=-1;
    f[0][0]=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=k;j++)
            for(int t=1;t<=i;t++)
                if(f[t-1][j-1]!=-1&&f[i][j]<f[t-1][j-1]+(a[i]-a[t-1])*a[t-1])
                {
                    f[i][j]=f[t-1][j-1]+(a[i]-a[t-1])*a[t-1];
                    Trace[i][j]=t-1;
                }
    cout<<f[n][k]<<"\n";
    while(k>1)
    {
        rs.push_back(Trace[n][k]);
        n=Trace[n][k];
        k--;
    }
    for(int i=rs.size()-1;i>=0;i--)
        cout<<rs[i]<<' ';
}
#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...