/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 1ms 532.0 KiB
#3 Accepted 1ms 340.0 KiB
#4 Accepted 1ms 532.0 KiB
#5 Accepted 2ms 532.0 KiB
#6 Accepted 4ms 532.0 KiB
#7 Accepted 4ms 484.0 KiB
#8 Accepted 4ms 324.0 KiB
#9 Accepted 4ms 532.0 KiB
#10 Accepted 4ms 324.0 KiB
#11 Accepted 4ms 532.0 KiB
#12 Accepted 4ms 532.0 KiB
#13 Accepted 5ms 536.0 KiB
#14 Accepted 4ms 532.0 KiB
#15 Accepted 4ms 532.0 KiB
#16 Accepted 5ms 568.0 KiB
#17 Accepted 4ms 532.0 KiB
#18 Accepted 4ms 532.0 KiB
#19 Accepted 4ms 532.0 KiB
#20 Accepted 5ms 532.0 KiB
#21 Accepted 4ms 532.0 KiB
#22 Accepted 5ms 488.0 KiB
#23 Accepted 5ms 532.0 KiB
#24 Accepted 4ms 324.0 KiB
#25 Accepted 4ms 532.0 KiB
#26 Accepted 5ms 532.0 KiB
#27 Accepted 5ms 500.0 KiB
#28 Accepted 4ms 532.0 KiB
#29 Accepted 5ms 344.0 KiB
#30 Accepted 4ms 532.0 KiB
#31 Accepted 4ms 320.0 KiB
#32 Accepted 5ms 320.0 KiB
#33 Accepted 4ms 532.0 KiB
#34 Accepted 4ms 444.0 KiB
#35 Accepted 4ms 532.0 KiB
#36 Accepted 4ms 532.0 KiB
#37 Accepted 4ms 532.0 KiB
#38 Accepted 4ms 532.0 KiB
#39 Accepted 4ms 324.0 KiB
#40 Accepted 5ms 328.0 KiB
#41 Accepted 4ms 532.0 KiB
#42 Accepted 4ms 532.0 KiB
#43 Accepted 4ms 532.0 KiB
#44 Accepted 4ms 324.0 KiB
#45 Accepted 4ms 532.0 KiB
#46 Accepted 5ms 532.0 KiB
#47 Accepted 4ms 532.0 KiB
#48 Accepted 4ms 532.0 KiB
#49 Accepted 4ms 324.0 KiB
#50 Accepted 5ms 332.0 KiB
#51 Accepted 4ms 532.0 KiB
#52 Accepted 4ms 568.0 KiB
#53 Accepted 5ms 392.0 KiB
#54 Accepted 4ms 532.0 KiB
#55 Accepted 4ms 448.0 KiB
#56 Accepted 4ms 532.0 KiB
#57 Accepted 4ms 532.0 KiB
#58 Accepted 5ms 400.0 KiB
#59 Accepted 4ms 532.0 KiB
#60 Accepted 4ms 444.0 KiB
#61 Accepted 4ms 532.0 KiB
#62 Accepted 4ms 532.0 KiB
#63 Accepted 3ms 532.0 KiB
#64 Accepted 3ms 532.0 KiB
#65 Accepted 3ms 532.0 KiB
#66 Accepted 4ms 532.0 KiB
#67 Accepted 4ms 532.0 KiB
#68 Accepted 4ms 324.0 KiB
#69 Accepted 4ms 532.0 KiB
#70 Accepted 4ms 532.0 KiB
#71 Accepted 4ms 532.0 KiB
#72 Accepted 4ms 320.0 KiB
#73 Accepted 4ms 532.0 KiB
#74 Accepted 4ms 324.0 KiB
#75 Accepted 4ms 532.0 KiB
#76 Accepted 4ms 532.0 KiB
#77 Accepted 4ms 344.0 KiB
#78 Accepted 4ms 532.0 KiB
#79 Accepted 4ms 324.0 KiB
#80 Accepted 4ms 532.0 KiB
#81 Accepted 617ms 1.32 MiB
#82 Accepted 620ms 1.312 MiB
#83 Accepted 618ms 1.305 MiB
#84 Accepted 631ms 1.328 MiB
#85 Accepted 623ms 1.312 MiB
#86 Accepted 635ms 1.316 MiB
#87 Accepted 632ms 1.316 MiB
#88 Accepted 630ms 1.305 MiB
#89 Accepted 632ms 1.316 MiB
#90 Accepted 623ms 1.312 MiB
#91 Accepted 1041ms 8.074 MiB
#92 Accepted 1046ms 8.082 MiB
#93 Accepted 1046ms 8.082 MiB
#94 Accepted 429ms 8.086 MiB
#95 Accepted 159ms 8.078 MiB
#96 Accepted 1008ms 8.086 MiB
#97 Accepted 1067ms 8.152 MiB
#98 Accepted 87ms 8.086 MiB
#99 Accepted 85ms 8.086 MiB
#100 Accepted 91ms 8.246 MiB

Code

/*
 *   Copyright (c) 2025 Emon Thakur
 *   All rights reserved.
 */
#include<bits/stdc++.h>
using namespace std;
using ll=long long;

struct SGT{
    vector<ll> sg;
    SGT(int n) {sg.resize(n*4+10); }
   
    void update(int node,int start,int end,int ind,ll val)
    {
        if(start==end)
        {
            sg[node] = max(sg[node] , val);
            return;
        }
        int mid = (start + end)/2;
        if(ind <= mid) update(node*2,start,mid,ind,val);
        else update(node*2+1,mid+1,end,ind,val);
        sg[node] = max(sg[node*2] , sg[node*2]+1);
    }

    ll query(int node,int start,int end,int l,int r)
    {
        if(l>end || r<start) return 0;
        if(l<=start && r>=end) return sg[node];
        int mid = (start+end)/2;
        return max(query(node*2,start,mid,l,r) , query(node*2+1,mid+1,end,l,r));
    }
};

ll calc(int ind,int n,vector<int>&a,vector<int>&b)
{
    ll ans = 0;
    SGT sgt(n);

    for(int i=ind;i<n;i++)
    {
        ll pmax =(a[i]==1)? 0 : sgt.query(1,1,n,0,a[i]-1);
        ans = max(ans , pmax+b[i]);
        sgt.update(1,1,n,a[i],ans);
    }
    return ans;
}

void main2(int tc)
{
    // string outp = "output"+to_string(tc)+".txt";
    // string inp = "input"+to_string(tc)+".txt";
    // ofstream file(outp);
    // freopen(inp.c_str(),"r",stdin);
    ios::sync_with_stdio(false); cin.tie(nullptr);
    int t; cin >> t; while(t--)
    {
        int n; cin >> n;
        vector<int> a(n),b(n);
        for(int i=0;i<n;i++) cin >> a[i];
        for(int i=0;i<n;i++) cin >> b[i];
        
        ll mxans = calc(0,n,a,b);

        int lo=0,hi=n-1,mid,ind=0;
        while(lo<=hi)
        {
            mid = (lo+hi)/2;
            if(calc(mid,n,a,b) == mxans)
            {
                ind = mid;
                lo = mid+1;
            }else hi = mid-1;
        }
        cout<<n-ind<<'\n';
        //file<<n-ind<<'\n';
    }
}

int main()
{
    main2(0);
    //for(int i=0;i<100;i++) main2(i);
}

Information

Submit By
Type
Submission
Problem
P1224 Maximize the max
Language
C++17 (G++ 13.2.0)
Submit At
2025-08-17 20:16:05
Judged At
2025-08-17 20:16:05
Judged By
Score
100
Total Time
1067ms
Peak Memory
8.246 MiB