제출 #1190932

#제출 시각아이디문제언어결과실행 시간메모리
1190932vusalMountains (NOI20_mountains)C++20
100 / 100
426 ms45048 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

using pii = pair<int,int>;
#define int long long
    
typedef tree
<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;

const int oo = 1e18;
const int MAXN = 1e5 + 7;

void _()
{
    int n;
    cin >> n;

    vector<int>v(n);
    for(int &i : v) cin >> i;

    vector<int>l(n), r(n);
    
    indexed_set leftset;
    indexed_set rightset;

    for(int i = 0; i < n; i++)
    {
        l[i] = leftset.order_of_key(v[i]);
        leftset.insert(v[i]);
    }

    for(int i = n - 1; i >= 0; i--)
    {
        r[i] = rightset.order_of_key(v[i]);
        rightset.insert(v[i]);
    }

    int sum = 0;
    for(int i = 0; i < n; i++)
    {
        sum += (1LL * l[i] * r[i]);
    }

    cout << sum << endl;
}   

signed main()
{
    int tt = 1;
    // cin >> tt;
    while(tt--) _();
}
#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...