Submission #534461

#TimeUsernameProblemLanguageResultExecution timeMemory
534461someoneGroup Photo (JOI21_ho_t3)C++14
100 / 100
419 ms197848 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int N = 5e3 + 42, INF = 1e18; int n, a[N], pos[N], val[N], inv[N][N]; signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; for(int i = 0; i < n; i++) cin >> a[i]; for(int i = 0; i < n; i++) pos[a[i]-1] = i; for(int i = 0; i < n; i++) for(int j = i+1; j < n; j++) if(pos[i] > pos[j]) inv[i+1][j+1] = 1; for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) inv[i][j] += inv[i-1][j] + inv[i][j-1] - inv[i-1][j-1]; for(int i = 1; i <= n; i++) val[i] = INF; for(int i = 0; i < n; i++) { for(int j = i+1; j <= n; j++) { val[j] = min(val[j], val[i] + ((j-i)*(j-i-1))/2 - 2 * (inv[j][j] + inv[i][i] - inv[i][j] - inv[j][i])); } } cout << inv[n][n] + val[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...