Submission #935069

#TimeUsernameProblemLanguageResultExecution timeMemory
935069haxormanGroup Photo (JOI21_ho_t3)C++14
100 / 100
254 ms197008 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int mxN = 5007; int arr[mxN], pos[mxN], inv[mxN][mxN], dp[mxN]; int f(int h) { if (!h) { return 0; } if (dp[h] != -1) { return dp[h]; } int ret = INT_MAX, add = 0; for (int x = h; x >= 1; --x) { add += h - pos[x] + 2*inv[x][h] - inv[x][x]; ret = min(ret, f(x-1) + add); } return dp[h] = ret; } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; for (int i = 1; i <= n; ++i) { cin >> arr[i]; pos[arr[i]] = i; } for (int y = 1; y <= n; ++y) { int cnt = 0; for (int i = 1; i <= n; ++i) { if (arr[i] > y) { ++cnt; } inv[arr[i]][y] = cnt; } } memset(dp, -1, sizeof(dp)); cout << f(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...