제출 #744922

#제출 시각아이디문제언어결과실행 시간메모리
744922zeta7532수열 (APIO14_sequence)C++17
0 / 100
38 ms2380 KiB
#include <bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
using namespace std;
using ll = long long;
const ll mod = 998244353;
#define fi first
#define se second
#define rep(i,n) for(ll i=0;i<n;i++)
#define all(x) x.begin(),x.end()
#define faster ios::sync_with_stdio(false);cin.tie(nullptr)

int main() {
    ll N,K;
    cin >> N >> K;
    vector<ll> A(N);
    rep(i,N) cin >> A[i];
    vector<ll> sum(N+1);
    sum[0]=0;
    rep(i,N) sum[i+1]=sum[i]+A[i];
    ll ans=0;
    set<ll> s;
    s.insert(0);
    s.insert(N);
    rep(i,K){
        ll cnt1=0,cnt2=-1;
        auto itl=s.begin();
        auto itr=s.begin();
        itr++;
        while(itr!=s.end()){
            for(ll j=*itl+1;j<*itr;j++){
                if(cnt1<(sum[j]-sum[*itl])*(sum[*itr]-sum[j])){
                    cnt1=(sum[j]-sum[*itl])*(sum[*itr]-sum[j]);
                    cnt2=j;
                }
            }
            itl++;
            itr++;
        }
        ans+=cnt1;
        s.insert(cnt2);
    }
    cout << ans << endl;
    s.erase(0);
    s.erase(N);
    auto it=s.begin();
    while(it!=s.end()){
        cout << *it << " ";
        it++;
    }
    cout << endl;
    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...