Submission #1285022

#TimeUsernameProblemLanguageResultExecution timeMemory
1285022jackofall718Mountains (NOI20_mountains)C++20
100 / 100
350 ms33316 KiB
#include <bits/stdc++.h> #include <chrono> #define ll long long int #define endl '\n' #define vn vector<ll> #define vi vector<pair <ll,ll>> using namespace std; using namespace std::chrono; const ll INF = 0x3f3f3f3f3f3f3f; #define pb push_back #define srt(vp) sort(vp.begin(), vp.end()) #define pii pair<ll,ll> struct fenwick{ vn bit; ll n; fenwick(ll size){ n=size; bit.assign(n+1,0); } void update(ll i, ll val){ for (;i<=n; i+= i & -i){//; at the start bit[i]+= val; } } ll query(ll i){ ll sum = 0; for (;i>0; i-= i&-i){// > not >= cuz 1-based sum += bit[i]; } return sum; } }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); auto start = high_resolution_clock::now(); ll n; cin >> n; vn v(n); for (int i = 0; i < n; i++) cin >> v[i]; vn arr = v; sort(arr.begin(),arr.end()); arr.erase(unique(arr.begin(),arr.end()),arr.end()); map <ll,ll> pos; for (int i=0;i<arr.size();i++){ pos[arr[i]]=i+1; } for (int i=0;i<n;i++){ v[i]=pos[v[i]]; } ll size = arr.size(); vn left(n,0); vn right(n,0); fenwick bitL(size); fenwick bitR(size); for (int i=0;i<n;i++){ left[i]=bitL.query(v[i]-1); bitL.update(v[i],1); } for (int i=n-1;i>=0;i--){ right[i]=bitR.query(v[i]-1); bitR.update(v[i],1); } ll ans = 0; for (int i=0;i<n;i++){ ans += left[i]*right[i]; } cout<<ans<<endl; auto stop = high_resolution_clock::now(); auto duration = duration_cast<microseconds>(stop - start); // cout << "Time taken by function: " << duration.count() << " microseconds" << endl; 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...