#include <bits/stdc++.h>
using namespace std;
struct BIT {
int n;
vector<long long> bit;
BIT(int n_ = 0) { init(n_); }
void init(int n_) {
n = n_;
bit.assign(n + 1, 0);
}
void add(int idx, long long delta) {
for (; idx <= n; idx += idx & -idx) bit[idx] += delta;
}
long long sum(int idx) const {
long long res = 0;
for (; idx > 0; idx -= idx & -idx) res += bit[idx];
return res;
}
};
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
vector<int> a(n); for (auto& x : a) cin >> x;
vector<int> vals = a;
sort(vals.begin(), vals.end());
vals.erase(unique(vals.begin(), vals.end()), vals.end());
int m = vals.size();
BIT bit(m);
int ans = 0;
for (int i = n - 1; i >= 0; i--) {
int idx = lower_bound(vals.begin(), vals.end(), a[i]) - vals.begin() + 1;
int thr = upper_bound(vals.begin(), vals.end(), a[i] - 2) - vals.begin();
ans += bit.sum(thr);
bit.add(idx, 1);
}
cout << ans - 1;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |