Submission #1303940

#TimeUsernameProblemLanguageResultExecution timeMemory
1303940nathlol2Mountains (NOI20_mountains)C++20
100 / 100
524 ms28892 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int N = 333333; int n, a[N], lf[N], rf[N], bit[N]; map<int, int> mp; void clear(){ memset(bit, 0, sizeof bit); } int qry(int idx){ int res = 0; for(;idx>0;idx-=idx & -idx) res += bit[idx]; return res; } void upd(int idx, int x){ for(;idx<=n;idx+=idx & -idx) bit[idx] += x; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n; for(int i = 1;i<=n;i++){ cin >> a[i]; mp[a[i]]; } int cc = 0; for(auto &[x, y] : mp){ y = ++cc; } memset(bit, 0, sizeof bit); for(int i = 1;i<=n;i++){ a[i] = mp[a[i]]; lf[i] = qry(a[i] - 1); upd(a[i], 1); } memset(bit, 0, sizeof bit); for(int i = n;i>=1;i--){ rf[i] = qry(a[i] - 1); upd(a[i], 1); } int ans = 0; for(int i = 2;i<n;i++) ans += lf[i] * rf[i]; cout << ans; }
#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...