# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
771212 | 2023-07-02T16:00:46 Z | Trisanu_Das | Group Photo (JOI21_ho_t3) | C++17 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; #define int long long int ulta[5005][5005], dp[5005]; int main(){ int n; cin >> n; int a[n + 1], pos[n + 1]; for(int i = 0; i < n + 1; i++) { cin >> a[i]; pos[a[i]] = i; } for(int i = 2; i < n + 1; i++){ int cnt = 0; for(int j = i - 1; i > 0; i--){ if(a[j] > a[i]) cnt++; ulta[i][j] = ulta[i][j - 1] + cnt; } } for(int i = 1; i < n + 1; i++){ dp[i] = INT_MAX; for(int j = 0; j < i; j++) dp[i] = min(dp[i], dp[j] + ulta[1][i] - ulta[1][j] + ((i - j) * (i - j - 1)) / 2 - 2 * inv[j + 1][i]); } cout << dp[n] << '\n'; }