/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 568.0 KiB
#2 Wrong Answer 1ms 352.0 KiB
#3 Wrong Answer 1ms 388.0 KiB

Code

// @rakibul-islam

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

using ll = long long;
const ll oo = 1e17;
const ll mod = 1e9 + 7;

struct Fenwick{
  int n;
  vector<long long> bit;
  Fenwick(int _n){
    n = _n + 1;
    bit.assign(n, 0);
  }

  void update(int idx, ll val){
    for(idx; idx < n; idx += idx & (-idx)){
      bit[idx] = max(bit[idx], val);
    }
  }

  long long get(int idx){
    long long res = 0;
    while(idx > 0){
      res = max(res, bit[idx]);
      idx -= idx & (-idx);
    }
    return res;
  }

  long long get(int l, int r){
    return get(r) - get(l-1);
  }
};

void solve() {
  int n;  cin >> n;
  vector<ll> a(n), b(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < n; i++) {
    cin >> b[i];
  }
  Fenwick bit(n + 5);
  vector<ll> dp(n);
  ll res = 0;
  for (int i = n - 1; i >= 0; i--) {
    int cur = a[i];
    ll qr = bit.get(cur + 1, n + 2);
    dp[i] = b[i] + qr;
    bit.update(cur, dp[i]);
    res = max(res, dp[i]);
  }
  for (int i = n - 1; i >= 0; i--) {
    if (dp[i] == res) {
      cout << (n - i) << "\n";
      return;
    }
  }
} 

int main() {
  cin.tie(0)->sync_with_stdio(0);
  int t = 1;  cin >> t;
  for (int test = 1; test <= t; test++) {
    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:22:55
Judged At
2025-09-02 17:22:55
Judged By
Score
1
Total Time
1ms
Peak Memory
568.0 KiB