#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 1000000009
#define INF 1000000019
#define INFL 1000000000000000099LL
ll cena2[5007][5007],cena[5007][5007],bst[5007];
ll a,b,c,d,t,n,m,l,q,gdzie[5007],cena3[5007][5007];
vector<ll>v;
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);
cin>>n;
for(ll i=0;i<n;i++){
cin>>a;
a--;
v.pb(a);
gdzie[a]=i;
}
for(ll i=0;i<n;i++){
for(ll j=v[i]+1;j<n;j++){
cena2[i][j]=cena2[i][j-1]+(gdzie[j]>i);
}
for(ll j=n-1;j>v[i];j--){
cena3[i][j-1]=cena3[i][j]+(gdzie[j]<i);
}
}
for(ll i=n-1;i>=0;i--){
for(ll j=i;j<n;j++){
cena[i][j]=cena[i+1][j];
cena[i][j]+=cena2[gdzie[i]][j]+cena3[gdzie[i]][j];
}
}
for(ll i=1;i<=n;i++){
bst[i]=INFL;
for(ll j=0;j<i;j++){
bst[i]=min(bst[i],bst[j]+cena[j][i-1]);
}
}
cout<<bst[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... |