#include <bits/stdc++.h>
using namespace std;
const int N=5e3+2, INF=1e9;
int W[N][N], M[N][N];
bool czy[N];
int a[N], dp[N];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)
{
for(int j=n;j>=1;j--)
{
W[a[i]][j]=W[a[i]][j+1];
W[a[i]][j]+=czy[j];
}
czy[a[i]]=true;
}
for(int i=1;i<=n;i++)czy[i]=0;
for(int i=n;i>=1;i--)
{
for(int j=a[i];j<=n;j++)
{
M[a[i]][j]=M[a[i]][j-1];
M[a[i]][j]+=czy[j];
}
czy[a[i]]=true;
}
for(int i=1;i<=n;i++)
{
dp[i]=INF;
int inw=0;
for(int j=i-1;j>=0;j--)
{
inw+=W[j+1][i+1] + M[j+1][i];
dp[i]=min(dp[j] + inw, dp[i]);
}
}
cout<<dp[n]<<" ";
return 0;
}
# | 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... |