This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std ;
#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update
using namespace __gnu_pbds;
template<class T> using ordered_set = tree<T, null_type , less<T> , rb_tree_tag , tree_order_statistics_node_update> ;
const int MAX = 3e5 + 10 ;
long long arr[MAX] , pref[MAX] , suff[MAX] ;
int n ;
int main()
{
ios_base::sync_with_stdio(0) ;
cin.tie(0) ;
cin>>n ;
for(int i = 0 ; i < n ; ++i)
cin>>arr[i] ;
ordered_set< pair<long long , int> >s ;
for(int i = 0 ; i < n ; ++i)
{
pref[i] = s.order_of_key({arr[i]-1 , 1e9}) ;
s.insert({arr[i] , i}) ;
}
s.clear() ;
for(int i = n-1 ; i >= 0 ; --i)
{
suff[i] = s.order_of_key({arr[i]-1 , 1e9}) ;
s.insert({arr[i] , i}) ;
}
long long ans = 0 ;
for(int i = 0 ; i < n ; ++i)
ans += pref[i] * suff[i] ;
return cout<<ans<<"\n" , 0 ;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |