Submission #1214023

#TimeUsernameProblemLanguageResultExecution timeMemory
1214023minhpkGroup Photo (JOI21_ho_t3)C++20
100 / 100
226 ms98552 KiB
#include <bits/stdc++.h> using namespace std; static const int INF = 1000000007; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; vector<int> z(N), pos(N); for (int i = 0; i < N; i++) { cin >> z[i]; z[i]--; } for (int i = 0; i < N; i++) { pos[z[i]] = i; } int pre[5005][5006]; for (int v = 0; v <= N; v++) { pre[N - 1][v] = 0; } for (int p = N - 1; p > 0; p--) { int val = z[p]; for (int v = 0; v <= val; v++) { pre[p - 1][v] = pre[p][v] + 1; } for (int v = val + 1; v <= N; v++) { pre[p - 1][v] = pre[p][v]; } } vector<int> dp(N + 1, INF); dp[0] = 0; for (int i = 1; i <= N; i++) { long long tmp = 0; for (int j = i - 1; j >= 0; j--) { tmp += (N - i) + pre[pos[j]][j] - 2 * pre[pos[j]][i]; dp[i] = min(dp[i], dp[j] + (int)tmp); } } cout << dp[N] << "\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...