제출 #1365146

#제출 시각아이디문제언어결과실행 시간메모리
1365146eyadooz수열 (APIO14_sequence)C++20
50 / 100
2095 ms32280 KiB
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) (int) (x).size()
#define endl '\n'
#define int long long

main()
{
    cin.tie(0) -> sync_with_stdio(0);

    int n, k;
    cin >> n >> k;
    int a[n+1], sum=0;
    for(int i = 1;i <= n;i++) {cin >> a[i];sum+=a[i];}
    int dp[n+5][k+5]={};
    int last[n+5][k+1]={};
    // vector<int> ans[n+5][k+5];
    for(int i = 0;i <= n;i++) 
    {
        for(int j=0;j<=k;j++) dp[i][j]=-INT_MAX;
    }
    dp[0][0]=a[0]=0;
    int mx=0;
    last[0][0]=-1;
    for(int i = 1;i <= n;i++) 
    {
        sum-=a[i];
        for(int x=1;x<=k;x++) {
            int cur=0;
            for(int j = i;j>=1;j--) 
            {
                cur+=a[j];
                if(dp[i][x]<=(cur*sum)+dp[j-1][x-1])
                {   
                    dp[i][x]=(cur*sum)+dp[j-1][x-1];
                    last[i][x]=j-1;
                }
            }
        }
        mx=max(mx, dp[i][k]);
    }
    for(int i = 1;i<=n;i++) 
    {
        if(mx==dp[i][k]) 
        {
            cout << mx << endl;
            int cur=k, j=i;
            cout << j << " ";
            while(cur!=1) 
            {
                cout << last[j][cur] << " ";
                j=last[j][cur];
                cur--;
            }
            return 0;
        }
    }
}
    

컴파일 시 표준 에러 (stderr) 메시지

sequence.cpp:14:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   14 | main()
      | ^~~~
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…