제출 #1347029

#제출 시각아이디문제언어결과실행 시간메모리
1347029jenterjongle45수열 (APIO14_sequence)C++20
0 / 100
0 ms344 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N=100100;
ll a[N];
pair<ll,vector<int>> F(int l,int r,int k){
    if(k==0) return {0ll,{}};
    if(l==r){
        vector<int> ret;
        while(k--) ret.push_back(l);
        return {0ll,ret};
    }
    ll mx=0;
    vector<int> v;
    for(int i=l;i<r;i++){
        for(int j=0;j<k;j++){
            auto x=F(l,i,j),y=F(i+1,r,k-j-1);
            if(mx<x.first+y.first+(a[i]-a[l-1])*(a[r]-a[i])){
                mx=(x.first+y.first+(a[i]-a[l-1])*(a[r]-a[i]));
                v.clear();
                v.push_back(i);
                for(int w:x.second) v.push_back(w);
                for(int w:y.second) v.push_back(w);
            }
        }
    }
    return {mx,v};
}
//52+12+33
int main(){
    int n,k;cin>>n>>k;
    for(int i=1;i<=n;i++) cin>>a[i],a[i]+=a[i-1];
    auto x=F(1,n,k);
    cout<<x.first<<'\n';
    for(int w:x.second) cout<<w<<" ";
}
#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...