Advertisement
ivnikkk

Untitled

May 8th, 2022
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.02 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS  
  2. #define debug(l) cerr<<#l<<' '<<l<<'\n';
  3. #include "bits/stdc++.h"
  4. using namespace std;
  5. #define all(a) a.begin(), a.end()
  6. typedef int ll;
  7. typedef pair<ll, ll> pll;
  8. typedef long double ld;
  9. struct Fenw {
  10.     vector<ll> f;
  11.     Fenw(ll n) {
  12.         f.resize(n + 1);
  13.     }
  14.     ll get(ll i) {
  15.         ll ans = 0;
  16.         for (; i > 0; i -= i & -i) {
  17.             ans += f[i];
  18.         }
  19.         return ans;
  20.     }
  21.     void upd(ll i, ll add) {
  22.         for (ll j = i; j < f.size(); j += j & -j) {
  23.             f[j] += add;
  24.         }
  25.     }
  26.     ll sum(ll l, ll r) {
  27.         return get(r) - get(l - 1);
  28.     }
  29. };
  30. const ll inf = 1e18;
  31. signed main() {
  32. #ifdef _DEBUG
  33.     freopen("input.txt", "r", stdin);
  34.     freopen("output.txt", "w", stdout);
  35. #endif
  36.     ios_base::sync_with_stdio(false);
  37.     cin.tie(nullptr);
  38.     cout.tie(nullptr);
  39.     ll t = 1;
  40.     cin >> t;
  41.     while (t--) {
  42.         ll n;
  43.         cin >> n;
  44.         vector<ll> a(n);
  45.         for (ll i = 0; i < n; i++) {
  46.             cin >> a[i];
  47.         }
  48.         vector<vector<ll>> left(n, vector<ll>(n, 0)), right(n, vector<ll>(n, 0));
  49.         for (ll i = 0; i < n; i++) {
  50.             for (ll j = n - 1; j > i; j--) {
  51.                 if (j + 1 < n) {
  52.                     left[i][j] = left[i][j + 1];
  53.                 }
  54.                 if (a[i] > a[j]) {
  55.                     left[i][j]++;
  56.                 }
  57.             }
  58.         }
  59.         for (ll j = 0; j < n; j++) {
  60.             for (ll i = 0; i < j; i++) {
  61.                 if (i - 1 >= 0) {
  62.                     right[i][j] = right[i - 1][j];
  63.                 }
  64.                 if (a[i] < a[j]) {
  65.                     right[i][j]++;
  66.                 }
  67.             }
  68.         }
  69.         long long ans = 0;
  70.         for (ll i = 0; i < n; i++) {
  71.             for (ll j = i + 1; j < n; j++) {
  72.                 if (j + 1 < n && i - 1 >= 0) {
  73.                     ans += left[i][j + 1] * right[i - 1][j];
  74.                 }
  75.             }
  76.         }
  77.         cout << ans <<'\n';
  78.     }
  79. }
  80.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement