Submission #1142725

#TimeUsernameProblemLanguageResultExecution timeMemory
1142725kitlixMoney (IZhO17_money)C++20
100 / 100
1186 ms63060 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int INF = 1e9; signed main() { ios_base::sync_with_stdio(0), cin.tie(0); int n; cin >> n; vector<int> a(n); for (auto& el : a) cin >> el; int curnondec = 0; vector<int> dp(n, INF); multiset<int> se; for (int i = 0; i < n; ++i) { if (i == 0 || a[i] < a[i - 1]) curnondec = 1; else curnondec += 1; se.insert(a[i]); for (int j = i - 1; j >= i - curnondec; --j) { se.extract(a[j + 1]); int mx = a[i], mn = a[j + 1]; auto it = se.lower_bound(mx); if (it == se.begin() || *prev(it) <= mn) { dp[i] = min(dp[i], (j == -1 ? 1ll : dp[j] + 1)); } } for (int j = i - curnondec + 1; j <= i; ++j) se.insert(a[j]); } cout << dp.back(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...