Submission #1122896

#TimeUsernameProblemLanguageResultExecution timeMemory
1122896SulAFinancial Report (JOI21_financial)C++20
17 / 100
84 ms8124 KiB
#include <bits/stdc++.h> using namespace std; #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/assoc_container.hpp> //#pragma GCC target("popcnt") using namespace __gnu_pbds; using namespace std; using ordered_set = tree<int, null_type, less_equal<>, rb_tree_tag, tree_order_statistics_node_update>; #define popcount __builtin_popcountll #define all(a) (a).begin(), (a).end() struct segtree { vector<int> tree; int offset = 1; segtree(int n) { while (offset < n) offset <<= 1; tree.resize(offset << 1, 0); } void update(int i) { tree[i += offset]++; while (i >>= 1) tree[i] = tree[2*i] + tree[2*i+1]; } int query(int v, int l, int r, int ql, int qr) { if (ql <= l && r <= qr) return tree[v]; if (qr < l || r < ql) return 0; int mid = (l+r)/2; return query(2*v, l, mid, ql, qr) + query(2*v+1, mid+1, r, ql, qr); } int query(int l, int r) { return query(1, 0, offset - 1, l, r); } }; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n,d; cin >> n >> d; int a[n]; for (int i = 0; i < n; cin >> a[i++]); if (d == 1) { int l[n]; vector<int> stack; for (int i = 0; i < n; i++) { while (!stack.empty() && a[stack.back()] < a[i]) stack.pop_back(); l[i] = stack.empty() ? 0 : stack.back() + 1; stack.push_back(i); } segtree s(n); int ans = 0; for (int i = n - 1; i >= 0; i--) { s.update(l[i]); ans = max(ans, s.query(0, i)); } cout << ans; } else if (d == n) { vector<int> lis; for (int i = 0; i < n; i++) { if (lis.empty() || a[i] > lis.back()) lis.push_back(a[i]); else *lower_bound(lis.begin(), lis.end(), a[i]) = a[i]; } cout << lis.size(); } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...