/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 1ms 324.0 KiB
#3 Accepted 1ms 532.0 KiB
#4 Accepted 1ms 320.0 KiB
#5 Accepted 1ms 532.0 KiB
#6 Accepted 1ms 324.0 KiB
#7 Accepted 1ms 484.0 KiB
#8 Accepted 1ms 320.0 KiB
#9 Accepted 1ms 532.0 KiB
#10 Accepted 5ms 484.0 KiB
#11 Accepted 5ms 532.0 KiB
#12 Accepted 4ms 324.0 KiB
#13 Accepted 5ms 352.0 KiB
#14 Accepted 4ms 532.0 KiB
#15 Accepted 4ms 320.0 KiB
#16 Accepted 4ms 532.0 KiB
#17 Accepted 4ms 532.0 KiB
#18 Accepted 4ms 536.0 KiB
#19 Accepted 5ms 532.0 KiB
#20 Accepted 4ms 580.0 KiB
#21 Accepted 4ms 576.0 KiB
#22 Accepted 4ms 532.0 KiB
#23 Accepted 4ms 532.0 KiB
#24 Accepted 5ms 344.0 KiB
#25 Accepted 4ms 532.0 KiB
#26 Accepted 4ms 532.0 KiB
#27 Accepted 4ms 532.0 KiB
#28 Accepted 4ms 532.0 KiB
#29 Accepted 5ms 376.0 KiB
#30 Accepted 4ms 536.0 KiB
#31 Accepted 4ms 532.0 KiB
#32 Accepted 4ms 532.0 KiB
#33 Accepted 4ms 532.0 KiB
#34 Accepted 5ms 576.0 KiB
#35 Accepted 5ms 564.0 KiB
#36 Accepted 4ms 764.0 KiB
#37 Accepted 4ms 532.0 KiB
#38 Accepted 4ms 536.0 KiB
#39 Accepted 4ms 532.0 KiB
#40 Accepted 4ms 532.0 KiB
#41 Accepted 5ms 504.0 KiB
#42 Accepted 4ms 532.0 KiB
#43 Accepted 4ms 536.0 KiB
#44 Accepted 4ms 532.0 KiB
#45 Accepted 5ms 764.0 KiB
#46 Accepted 4ms 536.0 KiB
#47 Accepted 4ms 320.0 KiB
#48 Accepted 5ms 576.0 KiB
#49 Accepted 4ms 536.0 KiB
#50 Accepted 4ms 532.0 KiB
#51 Accepted 5ms 532.0 KiB
#52 Accepted 5ms 448.0 KiB
#53 Accepted 5ms 324.0 KiB
#54 Accepted 4ms 532.0 KiB
#55 Accepted 4ms 532.0 KiB
#56 Accepted 5ms 532.0 KiB
#57 Accepted 4ms 532.0 KiB
#58 Accepted 5ms 532.0 KiB
#59 Accepted 4ms 532.0 KiB
#60 Accepted 4ms 320.0 KiB
#61 Accepted 4ms 532.0 KiB
#62 Accepted 4ms 532.0 KiB
#63 Accepted 4ms 532.0 KiB
#64 Accepted 5ms 532.0 KiB
#65 Accepted 4ms 532.0 KiB
#66 Accepted 5ms 532.0 KiB
#67 Accepted 4ms 460.0 KiB
#68 Accepted 5ms 532.0 KiB
#69 Accepted 4ms 532.0 KiB
#70 Accepted 4ms 532.0 KiB
#71 Accepted 4ms 532.0 KiB
#72 Accepted 4ms 532.0 KiB
#73 Accepted 5ms 372.0 KiB
#74 Accepted 5ms 532.0 KiB
#75 Accepted 5ms 492.0 KiB
#76 Accepted 4ms 320.0 KiB
#77 Accepted 4ms 320.0 KiB
#78 Accepted 5ms 532.0 KiB
#79 Accepted 4ms 532.0 KiB
#80 Accepted 4ms 532.0 KiB
#81 Accepted 136ms 1.625 MiB
#82 Accepted 109ms 1.621 MiB
#83 Accepted 109ms 1.617 MiB
#84 Accepted 109ms 1.59 MiB
#85 Accepted 139ms 1.621 MiB
#86 Accepted 109ms 1.625 MiB
#87 Accepted 109ms 1.594 MiB
#88 Accepted 109ms 1.621 MiB
#89 Accepted 108ms 1.621 MiB
#90 Accepted 110ms 1.602 MiB
#91 Accepted 149ms 11.254 MiB
#92 Accepted 145ms 11.031 MiB
#93 Accepted 146ms 11.215 MiB
#94 Accepted 83ms 11.211 MiB
#95 Accepted 78ms 11.02 MiB
#96 Accepted 148ms 11.051 MiB
#97 Accepted 145ms 11.223 MiB
#98 Accepted 106ms 11.062 MiB
#99 Accepted 90ms 11.062 MiB
#100 Accepted 90ms 11.02 MiB

Code

#include "bits/stdc++.h"
#ifndef LOCAL
#define dbg(...)
#define debug(...)
#endif

// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// using namespace __gnu_pbds;

using namespace std;
#define int long long
#define sz(v) (int)(v).size()
#define all(v) begin(v),end(v)
#define rep(i,a,b) for(int i=a;i<(b);++i)
#define cinv(v) for (auto &it:v) cin>>it;
#define coutv(v) for (auto &it:v) cout<< it<<' '; cout<<'\n';
#define unique(v) sort(v.begin(), v.end()); v.erase(unique(v.begin(), v.end()), v.end());
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
#define rand(l, r) uniform_int_distribution<ll>(l, r)(rng)
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using vi = vector<int>;
template<class T> using V = vector<T>;
// template<typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

const int N=2e5+5;
int t[4*N];
void upd(int node, int b, int e, int i, int x){
	if (b==e) return void(t[node]=max(t[node], x));
	int m=(b+e)>>1;
	if (i<=m) upd(node<<1, b, m, i, x);
	else upd(node<<1|1, m+1, e, i, x);
	t[node]=max(t[node<<1], t[node<<1|1]); 
}

int query(int node, int b, int e, int l, int r){
	if (b>r || e<l) return 0;
	if (b>=l && e<=r) return t[node];
	int m=(b+e)>>1;
	return max(query(node<<1, b, m, l, r), query(node<<1|1, m+1, e, l, r));
}

void shelby(int tc) {
	int n;
	cin>>n;
	for (int i=1;i<=4*n+5;++i) t[i]=0;
	vector<int> a(n+1), b(n+1);
	for (int i=1;i<=n;++i) cin>>a[i];
	for (int i=1;i<=n;++i) cin>>b[i];

	int mx=0;
	vector<int> v(n+1);
	for (int i=n;i;--i){
		int now=query(1,1,n,a[i]+1,n);
		debug(i,now);
		upd(1,1,n,a[i],b[i]+now);
		int x= query(1,1,n,a[i],a[i]);
		v[i]=x;
		mx=max(mx,x);
	}

	int ans=0;
	for (int i=n;i;--i){
		ans++;
		if (v[i]==mx) break;
	}
	debug(v);
	cout<<ans<<'\n';
}

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    int t = 1;
    cin >> t;
    for (int _ = 1; _ <= t; ++_) shelby(_);
}
  

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:20:05
Judged At
2025-09-02 17:20:05
Judged By
Score
100
Total Time
149ms
Peak Memory
11.254 MiB