Submission #546077

#TimeUsernameProblemLanguageResultExecution timeMemory
546077andrei_boacaSplit the sequence (APIO14_sequence)C++14
0 / 100
59 ms1848 KiB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
ll n,k,v[100005],s[100005],ans=1e18,maxim;
vector<int> sol;
int main()
{
    cin>>n>>k;
    k++;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i];
        s[i]=s[i-1]+v[i];
        maxim=max(maxim,v[i]);
    }
    ll avg=max(0LL,s[n]/k-10);
    ll steps=200;
    while(steps--)
    {
        vector<int> poz;
        ll last=0;
        ll rez=0;
        for(int i=1;i<=n;i++)
            if(i==n||(s[i]-s[last]>avg&&poz.size()<k)||n-i+1==k-poz.size())
            {
                ll p=i-1;
                if(p==last||i==n)
                    p++;
                ll val=s[p]-s[last];
                val*=val;
                rez+=val;
                poz.push_back(p);
                last=p;
            }
        if(poz.size()==k)
        {
            if(rez<ans)
            {
                ans=rez;
                sol=poz;
            }
        }
        avg++;
    }
    cout<<(s[n]*s[n]-ans)/2<<'\n';
    for(int i=0;i+1<sol.size();i++)
    {
        if(i!=0)
            cout<<' ';
        cout<<sol[i];
    }
    return 0;
}

Compilation message (stderr)

sequence.cpp: In function 'int main()':
sequence.cpp:25:51: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   25 |             if(i==n||(s[i]-s[last]>avg&&poz.size()<k)||n-i+1==k-poz.size())
      |                                         ~~~~~~~~~~^~
sequence.cpp:25:61: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'long long unsigned int' [-Wsign-compare]
   25 |             if(i==n||(s[i]-s[last]>avg&&poz.size()<k)||n-i+1==k-poz.size())
      |                                                        ~~~~~^~~~~~~~~~~~~~
sequence.cpp:36:22: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   36 |         if(poz.size()==k)
      |            ~~~~~~~~~~^~~
sequence.cpp:47:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |     for(int i=0;i+1<sol.size();i++)
      |                 ~~~^~~~~~~~~~~
#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...