Submission #1314652

#TimeUsernameProblemLanguageResultExecution timeMemory
1314652joshjuiceMountains (NOI20_mountains)C++20
100 / 100
251 ms16836 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; struct Fenwick { int n; vector<ll> f; Fenwick(int n): n(n), f(n+1, 0) {} void update(int i, ll v) { for (; i <= n; i += i & -i) f[i] += v; } ll query(int i) const { ll s = 0; for (; i > 0; i -= i & -i) s += f[i]; return s; } }; int main(){ ll n; cin >> n; vector<ll> h(n); for (ll i = 0; i < n; ++i) cin >> h[i]; vector<ll> v = h; sort(v.begin(), v.end()); v.erase(unique(v.begin(), v.end()), v.end()); ll m = v.size(); vector<ll> c(n); for (ll i = 0; i < n; ++i) c[i] = lower_bound(v.begin(), v.end(), h[i])-v.begin()+1; Fenwick fwl(m), fwr(m); vector<ll> l(n), r(n); for (ll i = 0; i < n; ++i) { ll x = c[i]; l[i] = fwl.query(x-1); fwl.update(x, 1); } for (ll i = n-1; i >= 0; --i) { ll x = c[i]; r[i] = fwr.query(x-1); fwr.update(x, 1); } ll a = 0; for (ll i = 0; i < n; ++i) { a += l[i]*r[i]; } cout << a; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...