Submission #103559

#TimeUsernameProblemLanguageResultExecution timeMemory
103559kjain_1810수열 (APIO14_sequence)C++17
50 / 100
222 ms3704 KiB
#include <bits/stdc++.h>
#define pb push_back
#define f first
#define s second
#define ind(a) scanf("%d", &a)
#define inlld(a) scanf("%lld", &a)
#define ind2(a, b) scanf("%d%d", &a, &b)
#define inlld2(a, b) scanf("%lld%lld", &a, &b)
#define ind3(a, b, c) scanf("%d%d%d", &a, &b, &c)
#define inlld3(a, b, c) scanf("%lld%lld%lld", &a, &b, &c)

using namespace std;

const int N=1e3+5;
const int MOD=1e9+7;

typedef long long ll;
typedef long double ld;

ll arr[N], n, k, dp[N][205], pref[N], nex[N][205];

int main() 
{
    inlld2(n, k);
    for(ll a=1; a<=n; a++)
    {
        inlld(arr[a]);
        pref[a]=pref[a-1]+arr[a];
    }
    for(ll a=1; a<=n; a++)
        for(ll b=1; b<=k; b++)
            dp[a][b]=-1e18;
    for(ll b=1; b<=k; b++)
        for(ll a=1; a<=n; a++)
        {
            // if(b<a)
            //     continue;
            for(ll c=1; c<a; c++)
            {
                // dp[a][b]=max(dp[a][b], dp[c][b-1]+(pref[a]-pref[c])*pref[c]);
                if(dp[c][b-1]+(pref[a]-pref[c])*pref[c]>dp[a][b])
                {
                    dp[a][b]=dp[c][b-1]+(pref[a]-pref[c])*pref[c];
                    nex[a][b]=c;
                }
            }
        }
    printf("%lld\n", dp[n][k]);
    ll i=n, j=k;
    vector<ll>ans;
    while(j>0)
    {
        // printf("%lld %lld %lld\n", i, j, nex[i][j]);
        ans.pb(nex[i][j]);
        i=nex[i][j];
        j--;    
    }
    for(ll a=ans.size()-1; a>=0; a--)
        printf("%lld ", ans[a]);
    printf("\n");
    return 0;
}

Compilation message (stderr)

sequence.cpp: In function 'int main()':
sequence.cpp:8:27: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
 #define inlld2(a, b) scanf("%lld%lld", &a, &b)
                      ~~~~~^~~~~~~~~~~~~~~~~~~~
sequence.cpp:24:5: note: in expansion of macro 'inlld2'
     inlld2(n, k);
     ^~~~~~
sequence.cpp:6:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
 #define inlld(a) scanf("%lld", &a)
                  ~~~~~^~~~~~~~~~~~
sequence.cpp:27:9: note: in expansion of macro 'inlld'
         inlld(arr[a]);
         ^~~~~
#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...