#include using namespace std; using ll = long long; template using min_priority_queue = priority_queue, greater>; using pii = pair; using pll = pair; using Graph = vector>; const ll INF = 1LL << 60; template void chmax(T& a, T b) { if (b > a) a = b; } template void chmin(T& a, T b) { if (b < a) a = b; } template std::ostream& operator<<(std::ostream& os, const pair& x) noexcept { return os << "(" << x.first << ", " << x.second << ")"; } template void print_vector(vector a) { cout << '['; for (int i = 0; i < a.size(); i++) { cout << a[i]; if (i != a.size() - 1) { cout << ", "; } } cout << ']' << endl; } class BIT { public: // コンストラクタ BIT(); BIT(int); // 区間加算 void add(int, int, ll); // i番目の要素への加算 void add(int, ll); // 区間和 ll sum(int, int) const; // i番目の要素の値 ll at(int) const; private: void add_sub(int, int, ll); ll sum_sub(int, int) const; vector> _bit; int _size; }; // コンストラクタ BIT::BIT() {} BIT::BIT(int N) { _size = N + 1; _bit = vector>(2, vector(_size, 0)); } void BIT::add_sub(int p, int i, ll x) { for (int idx = i; idx < _size; idx += (idx & -idx)) { _bit[p][idx] += x; } } void BIT::add(int l, int r, ll x) { l++; r++; add_sub(0, l, -x * (l - 1)); add_sub(0, r, x * (r - 1)); add_sub(1, l, x); add_sub(1, r, -x); } void BIT::add(int i, ll x) { this->add(i, i + 1, x); } ll BIT::sum_sub(int p, int i) const { ll s = 0; for (int idx = i; idx > 0; idx -= (idx & -idx)) { s += _bit[p][idx]; } return s; } ll BIT::sum(int l, int r) const { ll sl = sum_sub(0, l) + sum_sub(1, l) * l; ll sr = sum_sub(0, r) + sum_sub(1, r) * r; return sr - sl; } ll BIT::at(int i) const { return this->sum(i, i + 1); } int main() { ios::sync_with_stdio(false); std::cin.tie(nullptr); ll N; cin >> N; vector A(N); for (int i = 0; i < N; i++) { cin >> A[i]; A[i]--; } auto bit = BIT(N); ll ret = 0; for (int i = 0; i < N; i++) { ll a = A[i]; if (bit.sum(a, N) > 0) { ret++; } bit.add(a, 1); } std::cout << ret << "\n"; return 0; }