Submission #936541

#TimeUsernameProblemLanguageResultExecution timeMemory
936541WarinchaiMountains (NOI20_mountains)C++14
100 / 100
251 ms23988 KiB
#include<bits/stdc++.h> #define int long long using namespace std; int ar[300005]; int id[300005]; int l[300005]; int r[300005]; vector<int>v; struct fenwick{ int info[300005]; void upd(int x,int val){ for(int i=x;i<=300000;i+=i&-i){ info[i]+=val; } } int fsum(int x){ int sum=0; for(int i=x;i>0;i-=i&-i){ sum+=info[i]; } return sum; } }fwl,fwr; int32_t main(){ int n;cin>>n; for(int i=0;i<n;i++){ cin>>ar[i]; v.push_back(ar[i]); } sort(v.begin(),v.end()); for(int i=0;i<n;i++){ id[i]=lower_bound(v.begin(),v.end(),ar[i])-v.begin()+1; } for(int i=0;i<n;i++){ l[i]=fwl.fsum(id[i]-1); fwl.upd(id[i],1); } for(int i=n-1;i>0;i--){ r[i]=fwr.fsum(id[i]-1); fwr.upd(id[i],1); } int ans=0; for(int i=0;i<n;i++){ ans+=l[i]*r[i]; } cout<<ans<<"\n"; }
#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...