제출 #1362529

#제출 시각아이디문제언어결과실행 시간메모리
1362529AvianshSequence (BOI23_sequence)C++20
11 / 100
2095 ms464 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long
const int mxn = 5005;
const int inf = 1e18;

int w[mxn+1];

int minCost(set<int>req){
    if(req.size()==1){
        if((*req.begin())==1){
            //base case
            return w[1];
        }
    }
    //break biggest element
    int ans = inf;
    int lar = (*(--req.end()));
    for(int j = 2;j<lar;j++){
        if(lar%j==0){
            int a = j;
            int b = lar/j;
            set<int>ne;
            for(int z : req){
                ne.insert(z);
            }
            ne.erase(lar);
            ne.insert(a);
            ne.insert(b);
            ans=min(ans,minCost(ne)+w[lar]);
        }
    }
    req.erase(lar);
    req.insert(lar-1);
    ans=min(ans,min(ans,minCost(req)+w[lar]));
    return ans;
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n;
    cin >> n;
    for(int i = 1;i<=n;i++){
        cin >> w[i];
    }
    for(int i = 1;i<=n;i++){
        cout << minCost({i}) << "\n";
    }
    return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…