Submission #1187406

#TimeUsernameProblemLanguageResultExecution timeMemory
1187406user736482Group Photo (JOI21_ho_t3)C++20
100 / 100
255 ms351948 KiB
#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 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...