Submission #1190953

#TimeUsernameProblemLanguageResultExecution timeMemory
1190953noobsolver24Mountains (NOI20_mountains)C++20
2 / 100
326 ms45060 KiB
#include "bits/stdc++.h"
using namespace std;

#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;

#define int long long
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
#define endl '\n'
#define all(v) v.begin(), v.end()

const long long sz = 3e5 + 5;
const long long sz1 = 1e7 + 1;
const long long inf = 1e18;
const long long mod = 998244353;

// mt19937 rng(time(NULL));

int a[sz];

int l[sz], r[sz];

inline void solve() {
    int n;
    cin >> n;
    ordered_set s, t;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    for (int i = 1; i <= n; i++) {
        l[i] = s.order_of_key(a[i]);
        s.insert(a[i]);
    }
    for (int i = n; i >= 1; i--) {
        r[i] = t.order_of_key(a[i]);
        t.insert(a[i]);
    }
    int ans = 0;
    for (int i = 1; i <= n; i++) ans += l[i] * r[i];
    cout << ans << endl;
}

signed main(){
    cin.tie(nullptr)->sync_with_stdio(0);
    int T = 1;
    // cin >> T;
    while (T--) {
        solve();
    }
    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...