/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 1ms 532.0 KiB
#3 Accepted 1ms 504.0 KiB
#4 Accepted 1ms 368.0 KiB
#5 Accepted 1ms 532.0 KiB
#6 Accepted 1ms 532.0 KiB
#7 Wrong Answer 1ms 320.0 KiB
#8 Wrong Answer 1ms 532.0 KiB

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;
int arr[N];
int tree[N*4];
void build(int node,int l,int r){
    if(l==r){
        tree[node]=arr[l];
        return;
    }
    int left=2*node;
    int right=2*node +1;
    int mid=(l+r)/2;
    build(left,l,mid);
    build(right,mid+1,r);
    tree[node]=max(tree[left],tree[right]);
}
int query(int node,int l,int r, int lx,int rx){
    if(l>=lx && r<=rx){
        return tree[node];
    }
    else if(l>rx || r<lx){
        return 0;
    }
    
    int left=node*2;
    int right=node*2+1;
    int mid=(l+r)/2;
    int p1=query(left,l,mid,lx,rx);
    int p2=query(right,mid+1,r,lx,rx);
    return max(p1,p2);
    
}
void update(int node,int l,int r,int i,int newval){
    if(l>=i && r<=i){
        tree[node]=newval;
        return;
    }
    else if(l>i || r<i){
        return;
    }
    int left=node*2;
    int right=node*2+1;
    int 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+1;i++)arr[i]=0;
    for(ll i=1;i<=(n+1)*4;i++)tree[i]=0;
    build(1,1,n+1);
    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=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);
    }
    cout<<n-mxidx<<endl;
}

int32_t main(){  
    
    ios::sync_with_stdio(false);cin.tie(nullptr);
    
    int t=1;
    cin>>t;
    for(int 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:34:03
Judged At
2025-09-02 17:34:03
Judged By
Score
6
Total Time
1ms
Peak Memory
532.0 KiB