제출 #1312551

#제출 시각아이디문제언어결과실행 시간메모리
1312551AMnuGroup Photo (JOI21_ho_t3)C++20
100 / 100
265 ms134432 KiB
#include <iostream>
using namespace std;

const int MAXN = 5e3+5, INF = 1e9;

int N, A, pos[MAXN], inv[MAXN][MAXN], mov[MAXN][MAXN], dp[MAXN];

int main() {
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	cin >> N;
	for (int i=1;i<=N;i++) {
        cin >> A;
        pos[A] = i;
    }
    for (int i=N;i>=1;i--) {
        for (int j=i+1;j<=N;j++) {
            inv[i][j] = inv[i][j-1]+inv[i+1][j]-inv[i+1][j-1]+(pos[i]<pos[j]);
        }
    }
    for (int i=N;i>=1;i--) {
        for (int j=N;j>i;j--) {
            mov[i][j] = mov[i+1][j]+mov[i][j+1]-mov[i+1][j+1]+(pos[i]>pos[j]);
        }
    }
    for (int i=1;i<=N;i++) {
        dp[i] = INF;
        for (int j=0;j<i;j++) {
            dp[i] = min(dp[i],dp[j]+inv[j+1][i]+mov[j+1][i+1]);
        }
    }
    cout << dp[N] << "\n";
}
#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...