/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 5ms 536.0 KiB
#3 Accepted 1ms 532.0 KiB
#4 Accepted 1ms 532.0 KiB
#5 Accepted 1ms 336.0 KiB
#6 Accepted 1ms 532.0 KiB
#7 Accepted 1ms 532.0 KiB
#8 Accepted 1ms 764.0 KiB
#9 Accepted 1ms 532.0 KiB
#10 Accepted 1ms 536.0 KiB
#11 Accepted 1ms 344.0 KiB
#12 Accepted 1ms 548.0 KiB
#13 Accepted 1ms 348.0 KiB
#14 Accepted 1ms 532.0 KiB
#15 Accepted 1ms 388.0 KiB
#16 Accepted 1ms 384.0 KiB
#17 Accepted 1ms 420.0 KiB
#18 Accepted 1ms 508.0 KiB
#19 Accepted 1ms 320.0 KiB
#20 Accepted 2ms 536.0 KiB
#21 Accepted 3ms 536.0 KiB
#22 Accepted 4ms 532.0 KiB
#23 Accepted 4ms 532.0 KiB
#24 Accepted 3ms 320.0 KiB
#25 Accepted 4ms 532.0 KiB
#26 Accepted 4ms 480.0 KiB
#27 Accepted 4ms 532.0 KiB
#28 Accepted 5ms 324.0 KiB
#29 Accepted 5ms 532.0 KiB
#30 Accepted 5ms 532.0 KiB
#31 Accepted 5ms 348.0 KiB
#32 Accepted 5ms 532.0 KiB
#33 Accepted 5ms 532.0 KiB
#34 Accepted 5ms 560.0 KiB
#35 Accepted 5ms 532.0 KiB
#36 Accepted 5ms 532.0 KiB
#37 Accepted 5ms 320.0 KiB
#38 Accepted 5ms 532.0 KiB
#39 Accepted 5ms 532.0 KiB
#40 Accepted 5ms 532.0 KiB
#41 Accepted 5ms 532.0 KiB
#42 Accepted 5ms 532.0 KiB
#43 Accepted 5ms 552.0 KiB
#44 Accepted 5ms 532.0 KiB
#45 Accepted 5ms 348.0 KiB
#46 Accepted 5ms 532.0 KiB
#47 Accepted 5ms 320.0 KiB
#48 Accepted 5ms 532.0 KiB
#49 Accepted 5ms 532.0 KiB
#50 Accepted 5ms 532.0 KiB
#51 Accepted 5ms 392.0 KiB
#52 Accepted 5ms 532.0 KiB
#53 Accepted 5ms 532.0 KiB
#54 Accepted 5ms 532.0 KiB
#55 Accepted 5ms 540.0 KiB
#56 Accepted 5ms 532.0 KiB
#57 Accepted 5ms 344.0 KiB
#58 Accepted 5ms 532.0 KiB
#59 Accepted 5ms 344.0 KiB
#60 Accepted 5ms 532.0 KiB
#61 Accepted 5ms 324.0 KiB
#62 Accepted 5ms 536.0 KiB
#63 Accepted 5ms 368.0 KiB
#64 Accepted 5ms 532.0 KiB
#65 Accepted 5ms 532.0 KiB
#66 Accepted 5ms 568.0 KiB
#67 Accepted 5ms 484.0 KiB
#68 Accepted 5ms 348.0 KiB
#69 Accepted 5ms 488.0 KiB
#70 Accepted 5ms 532.0 KiB
#71 Accepted 5ms 348.0 KiB
#72 Accepted 5ms 764.0 KiB
#73 Accepted 5ms 432.0 KiB
#74 Accepted 5ms 484.0 KiB
#75 Accepted 5ms 340.0 KiB
#76 Accepted 5ms 532.0 KiB
#77 Accepted 5ms 452.0 KiB
#78 Accepted 5ms 536.0 KiB
#79 Accepted 5ms 532.0 KiB
#80 Accepted 5ms 324.0 KiB
#81 Accepted 5ms 320.0 KiB
#82 Accepted 5ms 536.0 KiB
#83 Accepted 5ms 532.0 KiB
#84 Accepted 5ms 532.0 KiB
#85 Accepted 5ms 344.0 KiB
#86 Accepted 5ms 532.0 KiB
#87 Accepted 5ms 532.0 KiB
#88 Accepted 5ms 344.0 KiB
#89 Accepted 5ms 532.0 KiB
#90 Accepted 5ms 532.0 KiB
#91 Accepted 5ms 532.0 KiB
#92 Accepted 559ms 11.25 MiB
#93 Accepted 562ms 11.246 MiB
#94 Accepted 565ms 11.246 MiB
#95 Accepted 564ms 11.238 MiB
#96 Accepted 563ms 11.246 MiB
#97 Accepted 567ms 11.254 MiB
#98 Accepted 560ms 11.246 MiB
#99 Accepted 558ms 11.25 MiB
#100 Accepted 554ms 11.246 MiB

Code

/*
 *   Copyright (c) 2025 Emon Thakur
 *   All rights reserved.
 */
#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 minheap = priority_queue<long long, vector<long long>, greater<long long>>;
typedef tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> pbds; // find_by_order, order_of_key

#define ll long long
#define ld long double
#define MOD 1000000007
#define pie 2*(acos(0.0))
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define pb push_back
#define endl '\n'
#define lcm(a,b) (a*b)/(__gcd<ll>(a,b))
#define logb(base,val) log2l(val) / log2l(base)
#define print(v) for(auto e:v) cout<<e<<" "; cout<<endl;
#define printp(v) for(auto e:v) cout<<e.first<<" "<<e.second<<endl;
#define srt(v) sort(v.begin(),v.end())
#define rsrt(v) sort(v.rbegin(),v.rend())
#define life_is_a_race ios::sync_with_stdio(false); cin.tie(nullptr);
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

void pbdserase(pbds &t, int v)
{
    //normal erase function doesnt work in ordered multiset but this works
    int rank = t.order_of_key(v);
    auto it = t.find_by_order(rank);
    t.erase(it);
}

ll mod = 1e9+7;
ll Pow(ll a, ll b)
{
    ll ans = 1;
    while (b)
    {
        if (b & 1) ans = (ans * a) % mod;
        a = (a * a) % mod;
        b >>= 1;
    }
    ans += mod;
    ans %= mod;
    return ans;
}

void solve(int tc)
{
    //cout<<"Case "<<tc<<": ";
    //check N <= 2 cases 
    ll n; cin >> n;
    ll a[n];
    pbds s1,s2;
    for(int i=0;i<n;i++) cin >> a[i], s2.insert(a[i]);
    ll ans = 0;
    for(int i=0;i<n;i++)
    {
        pbdserase(s2 , a[i]);
        ans += ((Pow(2,s1.order_of_key(a[i]))-1) * (Pow(2,s2.order_of_key(a[i]))-1) ) % mod;
        ans %= mod;
        s1.insert(a[i]);
    }
    ans = (ans + mod) % mod;
    cout<<ans<<'\n';
}
int main()
{
    life_is_a_race
    int t=1; 
    cin>>t;
    for(int i=1;i<=t;i++) solve(i);
}

Information

Submit By
Type
Submission
Problem
P1213 good sequence
Language
C++17 (G++ 13.2.0)
Submit At
2025-07-26 16:03:24
Judged At
2025-07-26 16:03:24
Judged By
Score
100
Total Time
567ms
Peak Memory
11.254 MiB