# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
159137 | nafis_shifat | Split the sequence (APIO14_sequence) | C++14 | 353 ms | 131076 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#define pii pair<int,int>
#define ll long long
using namespace std;
const ll inf=1e15;
int path[100000+10][200+10]={};
void print(int st,int k)
{
if(path[st][k]==0)
{
cout<<st<<" ";
return;
}
print(path[st][k],k-1);
cout<<st<<" ";
}
int main()
{
int n,k;
cin>>n>>k;
ll dp[n+10][k+10]={};
ll a[n+5]={};
ll cum1[n+5]={};
ll cum2[n+5]={};
for(int i=1;i<=n;i++)
{
cin>>a[i];
cum1[i]=cum1[i-1]+a[i];
}
for(int i=n;i>0;i--)cum2[i]=cum2[i+1]+a[i];
for(int i=0;i<=n;i++)for(int j=0;j<=k;j++)dp[i][j]=0;
for(int i=0;i<=n;i++)
{
dp[i][0]=0;
dp[i][1]=cum1[i]*cum2[i+1];
path[i][1]=0;
}
for(int i=1;i<n;i++)
{
for(int j=2;j<=k && j<=i;j++)
{
int r=i-1;
int l=j-1;
int p=0;
if(l==r)
{
dp[i][j]=dp[i-1][j-1]+(cum1[i]-cum1[i-1])*cum2[i+1];
path[i][j]=i-1;
continue;
}
while(r>=l)
{
int mid1 = l+(r-l)/3;
int mid2 = r-(r-l)/3;
if(dp[mid1][j-1]+(cum1[i]-cum1[mid1])*cum2[i+1]>dp[mid2][j-1]+(cum1[i]-cum1[mid2])*cum2[i+1])
{
r=mid2-1;
p=mid1;
}
else
{
p=mid2;
l=mid1+1;
}
}
//cout<<i<<" "<<j<<endl;
dp[i][j]=dp[p][j-1]+(cum1[i]-cum1[p])*cum2[i+1];
path[i][j]=p;
}
}
ll mx=0,st;
for(int i=1;i<=n;i++)
{
if(dp[i][k]>mx)
{
mx=dp[i][k];
st=i;
}
}
cout<<mx<<endl;
print(st,k);
//for(int i=1;i<=10;i++)cout<<dp[i][3]+(cum1[11]-cum1[i])*cum2[12]<<" "<<dp[i][3]<<endl;
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |