/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Wrong Answer 1ms 408.0 KiB
#3 Wrong Answer 1ms 532.0 KiB

Code

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

class SegmentTree {
  public:
  int n;
  vector<ll> tree;
  SegmentTree(int n) : tree(2 * n + 10), n(n){};

  void upd(int pos, ll value) {
    for (tree[pos += n] = value; pos > 1; pos >>= 1)
      tree[pos >> 1] = max(tree[pos], tree[pos ^ 1]); // Range sum
  }

  long long query(int l, int r) {
    long long res = 0;
    for (l += n, r += n + 1; l < r; l >>= 1, r >>= 1) {
      if (l & 1) res = max(res, tree[l++]);
      if (r & 1) res = max(res, tree[--r]);
    }
    return res;
  }
};

int main(){
  int t;
  cin >> t;
  while (t--){
    ll n, MX = 0, ans = 0;
    cin >> n;
    ans = n;
    vector<ll> a(n + 1), b(n + 1), c(n + 1);
    for (int i = 0; i < n; i++){
      cin >> a[i];
    }
    for (int i = 0; i < n; i++){
      cin >> b[i];
    }
    SegmentTree st(n + 1);
    for (int i = n - 1; i >= 0; i--){
      c[a[i]] = max(c[a[i]], b[i]);
      ll mx = st.query(a[i] + 1, n + 1);
      ll cur = max(c[a[i]] + mx, st.query(a[i], a[i]));
      st.upd(a[i], cur);
      if (cur > MX){
        MX = cur;
        ans = i;
      } //cout<<MX<<" ";
    }
    cout << n - ans << endl;
  }
}

Information

Submit By
Type
Submission
Problem
P1224 Maximize the max
Contest
Testing - Intra LU Programming contest 25
Language
C++17 (G++ 13.2.0)
Submit At
2025-08-31 09:24:05
Judged At
2025-08-31 09:24:05
Judged By
Score
1
Total Time
1ms
Peak Memory
532.0 KiB