/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 4ms 532.0 KiB
#3 Accepted 4ms 320.0 KiB
#4 Accepted 4ms 532.0 KiB
#5 Accepted 5ms 532.0 KiB
#6 Accepted 5ms 532.0 KiB
#7 Wrong Answer 4ms 532.0 KiB
#8 Wrong Answer 4ms 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;
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);
    }
    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:42:40
Judged At
2025-09-02 17:42:40
Judged By
Score
6
Total Time
5ms
Peak Memory
532.0 KiB