Source Code
#include<iostream>
#include<algorithm>
#include<cmath>
#include<map>
#include<vector>
#include<set>
//#include<bits/stdc++.h>

using namespace std;




int main()
{

    std::ios_base::sync_with_stdio(NULL);
    cin.tie(NULL);
    cout.tie(NULL);

    int t;
    cin >> t;
    while (t--)
    {
        long long  n;
        cin >> n;
        vector<long long  > mn(n), mx(n),mp(n);

        int x;
        for (int i = 1; i <= n; i++)
        {
            cin >> x;
            mn[x] = i;
            mx[x] = i;
            mp[x] = i;


        }


        for (int i = 1; i < n; i++)
        {
            mx[i] = max(mx[i], mx[i - 1]);
            mn[i] = min(mn[i], mn[i - 1]);



        }

        long long ans = 0;
        
        ans += n;

        for (long long i = 1; i < n; i++)
        {
            
            if (mp[i] >= mn[i-1] && mp[i] <= mx[i-1])
                continue;

          


            ans += ((mn[i - 1] * (n - mx[i - 1] + 1)) - (min(mn[i - 1], mp[i]) * (n - max(mx[i - 1], mp[i]) + 1))) * i;
        }
        cout << ans << "\n";



    }



}
Copy
Mex shima_176
GNU G++17
67 ms
5.0 MB
Accepted