제출 #651073

#제출 시각아이디문제언어결과실행 시간메모리
651073ShinMoney (IZhO17_money)C++14
100 / 100
160 ms15032 KiB
#include <bits/stdc++.h> #define fi first #define se second #define mp make_pair using namespace std; template <class X, class Y> bool minimize(X &a, Y b) { if (a > b) return a = b, true; return false; } template <class X, class Y> bool maximize(X &a, Y b) { if (a < b) return a = b, true; return false; } signed main() { cin.tie(0)->sync_with_stdio(0); int n; cin >> n; vector<int> a(n + 7); for (int i = 1; i <= n; i ++) { cin >> a[i]; } vector<int> f((int) 1e6 + 7); auto modify = [&](int i, int v) { for (; i <= (int) 1e6; i += i & -i) { f[i] += v; } }; auto get = [&](int i) { int res = 0; for (; i; i -= i & - i) { res += f[i]; } return res; }; int res = 1, last = 0; vector<int> save; for (int i = 1; i <= n; i ++) { save.push_back(a[i]); if (a[i] < a[i - 1]) { for (int x: save) { modify(x, 1); } save.clear(); last = a[i]; res ++; } else if (a[i] > a[i - 1]) { if (get(a[i] - 1) - get(last) > 0) { res ++; for (int x: save) { modify(x, 1); } save.clear(); last = a[i]; } } } cout << res; 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...