Submission #1184000

#TimeUsernameProblemLanguageResultExecution timeMemory
1184000jerzykGroup Photo (JOI21_ho_t3)C++20
100 / 100
59 ms568 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> using namespace __gnu_pbds; using namespace std; #define pb push_back #define st first #define nd second typedef long long ll; typedef long double ld; const ll I = 1000LL * 1000LL * 1000LL * 1000LL * 1000LL * 1000LL; const ll M = 1000LL * 1000LL * 1000LL + 7LL; const int N = 5 * 1000 + 7; int tab[N], pos[N]; int dp[N]; void Solve() { int n; cin >> n; for(int i = 1; i <= n; ++i) { cin >> tab[i]; pos[tab[i]] = i; } for(int i = 1; i <= n; ++i) { int dod = 0; dp[i] = n * n + 100; for(int j = i + 1; j <= n; ++j) if(pos[j] < pos[i]) ++dod; for(int j = i - 1; j >= 0; --j) { dp[j] += dod; dp[i] = min(dp[i], dp[j]); if(pos[j] > pos[i]) --dod; else ++dod; } } cout << dp[n] << "\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); //int t; cin >> t; //while(t--) Solve(); 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...