/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 1ms 532.0 KiB
#3 Accepted 1ms 532.0 KiB
#4 Accepted 1ms 320.0 KiB
#5 Accepted 1ms 536.0 KiB
#6 Accepted 1ms 532.0 KiB
#7 Accepted 1ms 488.0 KiB
#8 Accepted 1ms 532.0 KiB
#9 Accepted 1ms 472.0 KiB
#10 Accepted 1ms 536.0 KiB
#11 Accepted 1ms 360.0 KiB
#12 Accepted 2ms 532.0 KiB
#13 Accepted 3ms 532.0 KiB
#14 Accepted 5ms 532.0 KiB
#15 Accepted 4ms 532.0 KiB
#16 Accepted 4ms 532.0 KiB
#17 Accepted 5ms 532.0 KiB
#18 Accepted 4ms 764.0 KiB
#19 Accepted 4ms 532.0 KiB
#20 Accepted 4ms 532.0 KiB
#21 Accepted 4ms 324.0 KiB
#22 Accepted 5ms 532.0 KiB
#23 Accepted 5ms 324.0 KiB
#24 Accepted 5ms 536.0 KiB
#25 Accepted 4ms 536.0 KiB
#26 Accepted 4ms 536.0 KiB
#27 Accepted 4ms 532.0 KiB
#28 Accepted 4ms 532.0 KiB
#29 Accepted 4ms 536.0 KiB
#30 Accepted 5ms 560.0 KiB
#31 Accepted 5ms 500.0 KiB
#32 Accepted 5ms 532.0 KiB
#33 Accepted 5ms 444.0 KiB
#34 Accepted 5ms 564.0 KiB
#35 Accepted 4ms 324.0 KiB
#36 Accepted 4ms 532.0 KiB
#37 Accepted 4ms 532.0 KiB
#38 Accepted 5ms 484.0 KiB
#39 Accepted 4ms 532.0 KiB
#40 Accepted 4ms 328.0 KiB
#41 Accepted 4ms 364.0 KiB
#42 Accepted 5ms 320.0 KiB
#43 Accepted 5ms 532.0 KiB
#44 Accepted 4ms 532.0 KiB
#45 Accepted 5ms 524.0 KiB
#46 Accepted 4ms 532.0 KiB
#47 Accepted 4ms 532.0 KiB
#48 Accepted 4ms 532.0 KiB
#49 Accepted 5ms 532.0 KiB
#50 Accepted 5ms 560.0 KiB
#51 Accepted 4ms 532.0 KiB
#52 Accepted 4ms 532.0 KiB
#53 Accepted 4ms 532.0 KiB
#54 Accepted 5ms 532.0 KiB
#55 Accepted 5ms 440.0 KiB
#56 Accepted 4ms 532.0 KiB
#57 Accepted 5ms 500.0 KiB
#58 Accepted 5ms 536.0 KiB
#59 Accepted 4ms 532.0 KiB
#60 Accepted 5ms 348.0 KiB
#61 Accepted 4ms 532.0 KiB
#62 Accepted 4ms 324.0 KiB
#63 Accepted 4ms 532.0 KiB
#64 Accepted 4ms 532.0 KiB
#65 Accepted 4ms 532.0 KiB
#66 Accepted 4ms 532.0 KiB
#67 Accepted 4ms 444.0 KiB
#68 Accepted 4ms 320.0 KiB
#69 Accepted 4ms 316.0 KiB
#70 Accepted 4ms 532.0 KiB
#71 Accepted 4ms 532.0 KiB
#72 Accepted 5ms 540.0 KiB
#73 Accepted 4ms 532.0 KiB
#74 Accepted 4ms 324.0 KiB
#75 Accepted 4ms 532.0 KiB
#76 Accepted 5ms 532.0 KiB
#77 Accepted 4ms 532.0 KiB
#78 Accepted 5ms 324.0 KiB
#79 Accepted 4ms 532.0 KiB
#80 Accepted 5ms 360.0 KiB
#81 Accepted 128ms 1.82 MiB
#82 Accepted 106ms 1.867 MiB
#83 Accepted 102ms 1.863 MiB
#84 Accepted 102ms 1.828 MiB
#85 Accepted 105ms 1.828 MiB
#86 Accepted 102ms 1.871 MiB
#87 Accepted 105ms 1.871 MiB
#88 Accepted 120ms 1.828 MiB
#89 Accepted 108ms 1.879 MiB
#90 Accepted 131ms 1.828 MiB
#91 Accepted 142ms 12.531 MiB
#92 Accepted 140ms 12.68 MiB
#93 Accepted 140ms 12.672 MiB
#94 Accepted 45ms 12.5 MiB
#95 Accepted 46ms 12.516 MiB
#96 Accepted 143ms 12.531 MiB
#97 Accepted 140ms 12.637 MiB
#98 Accepted 68ms 12.656 MiB
#99 Accepted 68ms 12.629 MiB
#100 Accepted 67ms 12.633 MiB

Code

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

#define pb      push_back
#define debug   cout<<"check"<<endl;cout.flush();
#define all(x)  (x).begin(),(x).end()
#define endl    '\n'

const ll N=200005;
const ll mod=1000000007;
const ll INF=2e18L+5;
ll arr[N];
ll tree[N*4];
void build(ll node,ll l,ll r){
    if(l==r){
        tree[node]=arr[l];
        return;
    }
    ll left=2*node;
    ll right=2*node +1;
    ll mid=(l+r)/2;
    build(left,l,mid);
    build(right,mid+1,r);
    tree[node]=max(tree[left],tree[right]);
}
ll query(ll node,ll l,ll r, ll lx,ll rx){
    if(l>=lx && r<=rx){
        return tree[node];
    }
    else if(l>rx || r<lx){
        return -1;
    }
    
    ll left=node*2;
    ll right=node*2+1;
    ll mid=(l+r)/2;
    ll p1=query(left,l,mid,lx,rx);
    ll p2=query(right,mid+1,r,lx,rx);
    return max(p1,p2);
    
}
void update(ll node,ll l,ll r,ll i,ll newval){
    if(l>=i && r<=i){
        tree[node]=newval;
        return;
    }
    else if(l>i || r<i){
        return;
    }
    ll left=node*2;
    ll right=node*2+1;
    ll mid=(l+r)/2;
    update(left,l,mid,i,newval);
    update(right,mid+1,r,i,newval);
    tree[node]=max(tree[left],tree[right]);
}
void solve(){
    ll n;
    cin>>n;
    for(ll i=1;i<=n;i++)arr[i]=0;
    for(ll i=1;i<=(n)*4;i++)tree[i]=0;
    build(1,1,n);
    vector<ll>v,u;
    for(ll i=1;i<=n;i++){
        ll a; cin>>a; v.pb(a);
    }
    for(ll i=1;i<=n;i++){
        ll a ; cin>>a; u.pb(a);
    }
    ll mx=0,mxidx=n;
    for(ll i=n-1;i>=0;i--){
        ll val;
        if(v[i]+1>n)val=u[i];
        else 
        val=query(1,1,n,v[i]+1,n)+u[i];
        // cout<<val<<endl;
        if(val>mx){
            mx=val; mxidx=i;
        }
        if(val>arr[v[i]])update(1,1,n,v[i],val),arr[v[i]]=val;
    }
    cout<<n-mxidx<<endl;
}

int32_t main(){  
    
    ios::sync_with_stdio(false);cin.tie(nullptr);
    
    ll t=1;
    cin>>t;
    for(ll i=1;i<=t;i++){
        solve();
    }
    
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1224 Maximize the max
Contest
LUCC Presents Intra LU Junior Programming Contest - Replay
Language
C++17 (G++ 13.2.0)
Submit At
2025-09-02 17:43:54
Judged At
2025-09-02 17:43:54
Judged By
Score
100
Total Time
143ms
Peak Memory
12.68 MiB