/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 1ms 320.0 KiB
#3 Accepted 2ms 532.0 KiB
#4 Accepted 3ms 532.0 KiB
#5 Accepted 3ms 532.0 KiB
#6 Accepted 5ms 532.0 KiB
#7 Accepted 5ms 532.0 KiB
#8 Accepted 5ms 532.0 KiB
#9 Accepted 5ms 532.0 KiB
#10 Accepted 5ms 532.0 KiB
#11 Accepted 2ms 532.0 KiB
#12 Accepted 2ms 568.0 KiB
#13 Accepted 1ms 440.0 KiB
#14 Accepted 1ms 532.0 KiB
#15 Accepted 1ms 532.0 KiB
#16 Accepted 1ms 532.0 KiB
#17 Accepted 1ms 532.0 KiB
#18 Accepted 1ms 556.0 KiB
#19 Accepted 1ms 532.0 KiB
#20 Accepted 1ms 432.0 KiB
#21 Accepted 1ms 492.0 KiB
#22 Accepted 1ms 488.0 KiB
#23 Accepted 1ms 536.0 KiB
#24 Accepted 1ms 532.0 KiB
#25 Accepted 1ms 532.0 KiB
#26 Accepted 1ms 532.0 KiB
#27 Accepted 1ms 480.0 KiB
#28 Accepted 1ms 324.0 KiB
#29 Accepted 1ms 532.0 KiB
#30 Accepted 1ms 488.0 KiB
#31 Accepted 1ms 364.0 KiB
#32 Accepted 1ms 484.0 KiB
#33 Accepted 1ms 508.0 KiB
#34 Accepted 1ms 536.0 KiB
#35 Accepted 1ms 484.0 KiB
#36 Accepted 1ms 380.0 KiB
#37 Accepted 1ms 384.0 KiB
#38 Accepted 1ms 488.0 KiB
#39 Accepted 1ms 324.0 KiB
#40 Accepted 1ms 532.0 KiB
#41 Accepted 1ms 532.0 KiB
#42 Accepted 1ms 420.0 KiB
#43 Accepted 1ms 532.0 KiB
#44 Accepted 1ms 532.0 KiB
#45 Accepted 5ms 532.0 KiB
#46 Accepted 5ms 532.0 KiB
#47 Accepted 5ms 532.0 KiB
#48 Accepted 5ms 532.0 KiB
#49 Accepted 5ms 532.0 KiB
#50 Accepted 5ms 532.0 KiB
#51 Accepted 3ms 532.0 KiB
#52 Accepted 2ms 588.0 KiB
#53 Accepted 1ms 532.0 KiB
#54 Accepted 1ms 320.0 KiB
#55 Accepted 1ms 324.0 KiB
#56 Accepted 1ms 436.0 KiB
#57 Accepted 1ms 320.0 KiB
#58 Accepted 1ms 532.0 KiB
#59 Accepted 1ms 320.0 KiB
#60 Accepted 1ms 532.0 KiB
#61 Accepted 1ms 348.0 KiB
#62 Accepted 1ms 348.0 KiB
#63 Accepted 1ms 484.0 KiB
#64 Accepted 1ms 532.0 KiB
#65 Accepted 1ms 532.0 KiB
#66 Accepted 2ms 340.0 KiB
#67 Accepted 3ms 532.0 KiB
#68 Accepted 4ms 320.0 KiB
#69 Accepted 3ms 532.0 KiB
#70 Accepted 2ms 532.0 KiB
#71 Accepted 2ms 408.0 KiB
#72 Accepted 2ms 532.0 KiB
#73 Accepted 5ms 532.0 KiB
#74 Accepted 5ms 532.0 KiB
#75 Accepted 5ms 712.0 KiB
#76 Accepted 5ms 324.0 KiB
#77 Accepted 5ms 320.0 KiB
#78 Accepted 5ms 488.0 KiB
#79 Accepted 5ms 532.0 KiB
#80 Accepted 5ms 532.0 KiB
#81 Accepted 2ms 532.0 KiB
#82 Accepted 1ms 368.0 KiB
#83 Accepted 1ms 448.0 KiB
#84 Accepted 1ms 348.0 KiB
#85 Accepted 1ms 532.0 KiB
#86 Accepted 1ms 324.0 KiB
#87 Accepted 1ms 532.0 KiB
#88 Accepted 1ms 532.0 KiB
#89 Accepted 1ms 532.0 KiB
#90 Accepted 1ms 532.0 KiB
#91 Accepted 1ms 532.0 KiB
#92 Accepted 581ms 10.488 MiB
#93 Accepted 535ms 10.492 MiB
#94 Accepted 531ms 10.488 MiB
#95 Accepted 538ms 10.492 MiB
#96 Accepted 536ms 10.48 MiB
#97 Accepted 534ms 10.488 MiB
#98 Accepted 531ms 10.492 MiB
#99 Accepted 533ms 10.484 MiB
#100 Accepted 532ms 10.492 MiB

Code

#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;
#define ll long long
ll mod = 1e9+7;

template<typename T>
using ordered_set = tree<
    T,
    null_type,
    less_equal<T>,          // less_equal<T> is used for multiset behavior
    rb_tree_tag,
    tree_order_statistics_node_update>;
template<typename T>
using ordered_multiset = tree<
    pair<T, int>,             // store value + unique ID
    null_type,
    less<pair<T, int>>,
    rb_tree_tag,
    tree_order_statistics_node_update>;

long long modPow(ll a,ll b){
    ll ans = 1;
    while(b>0){
        if(b&1) ans=(ans*a)%mod;
        b>>=1;
        a=(a*a)%mod;
    }
    return ans;
}
long long Pow(ll a,ll b){
    ll ans = 1;
    while(b>0){
        if(b&1) ans*=a;
        b>>=1;
        a*=a;
    }
    return ans;
}
void solve(){
    ll n ; cin >> n;
    vector<int>p(n);
    ordered_set<int> os_l,os_r;
    for(int i = 0;i< n;i++){
        cin >> p[i];
        os_r.insert(p[i]);
    }
    ll ans = 0;
    for(int i = 0;i < n ;i++){
        ll num = p[i];
        os_r.erase(os_r.find_by_order(os_r.order_of_key(p[i])));
        ll right =os_r.order_of_key(p[i]);
        ll left = os_l.order_of_key(p[i]);
        os_l.insert(p[i]);
        
        ans += (modPow(2,left)-1) *(modPow(2,right)-1);
        
        // ans += ((1<<left)-1)*((1<<right)-1);
        // cout<< left << ' ' << right<< endl;
        ans %= mod;
    }
    cout << ans << endl;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t; cin>> t;
    while(t--){
        solve();
    }

    return 0;
}

Information

Submit By
Type
Submission
Problem
P1213 good sequence
Language
C++17 (G++ 13.2.0)
Submit At
2025-08-08 07:52:40
Judged At
2025-08-08 07:52:40
Judged By
Score
100
Total Time
581ms
Peak Memory
10.492 MiB