/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 1ms 344.0 KiB
#3 Accepted 1ms 484.0 KiB
#4 Accepted 1ms 532.0 KiB
#5 Accepted 1ms 324.0 KiB
#6 Accepted 1ms 532.0 KiB
#7 Accepted 1ms 556.0 KiB
#8 Accepted 1ms 532.0 KiB
#9 Accepted 1ms 532.0 KiB
#10 Accepted 1ms 484.0 KiB
#11 Accepted 1ms 332.0 KiB
#12 Accepted 1ms 320.0 KiB
#13 Accepted 1ms 532.0 KiB
#14 Accepted 1ms 324.0 KiB
#15 Accepted 1ms 532.0 KiB
#16 Accepted 1ms 348.0 KiB
#17 Accepted 1ms 444.0 KiB
#18 Accepted 1ms 532.0 KiB
#19 Accepted 1ms 520.0 KiB
#20 Accepted 1ms 428.0 KiB
#21 Accepted 1ms 484.0 KiB
#22 Accepted 1ms 532.0 KiB
#23 Accepted 1ms 532.0 KiB
#24 Accepted 3ms 532.0 KiB
#25 Accepted 4ms 536.0 KiB
#26 Accepted 4ms 532.0 KiB
#27 Accepted 4ms 536.0 KiB
#28 Accepted 4ms 448.0 KiB
#29 Accepted 4ms 532.0 KiB
#30 Accepted 4ms 532.0 KiB
#31 Accepted 4ms 532.0 KiB
#32 Accepted 4ms 532.0 KiB
#33 Accepted 4ms 532.0 KiB
#34 Accepted 4ms 532.0 KiB
#35 Accepted 4ms 532.0 KiB
#36 Accepted 4ms 532.0 KiB
#37 Accepted 4ms 324.0 KiB
#38 Accepted 4ms 536.0 KiB
#39 Accepted 4ms 532.0 KiB
#40 Accepted 4ms 320.0 KiB
#41 Accepted 4ms 532.0 KiB
#42 Accepted 4ms 320.0 KiB
#43 Accepted 4ms 532.0 KiB
#44 Accepted 4ms 532.0 KiB
#45 Accepted 4ms 532.0 KiB
#46 Accepted 4ms 556.0 KiB
#47 Accepted 4ms 532.0 KiB
#48 Accepted 4ms 536.0 KiB
#49 Accepted 5ms 532.0 KiB
#50 Accepted 4ms 532.0 KiB
#51 Accepted 5ms 556.0 KiB
#52 Accepted 4ms 532.0 KiB
#53 Accepted 4ms 532.0 KiB
#54 Accepted 4ms 532.0 KiB
#55 Accepted 4ms 564.0 KiB
#56 Accepted 4ms 320.0 KiB
#57 Accepted 5ms 532.0 KiB
#58 Accepted 4ms 532.0 KiB
#59 Accepted 4ms 320.0 KiB
#60 Accepted 4ms 532.0 KiB
#61 Accepted 4ms 532.0 KiB
#62 Accepted 4ms 324.0 KiB
#63 Accepted 5ms 536.0 KiB
#64 Accepted 4ms 532.0 KiB
#65 Accepted 4ms 532.0 KiB
#66 Accepted 4ms 532.0 KiB
#67 Accepted 4ms 536.0 KiB
#68 Accepted 4ms 536.0 KiB
#69 Accepted 4ms 532.0 KiB
#70 Accepted 5ms 532.0 KiB
#71 Accepted 5ms 532.0 KiB
#72 Accepted 4ms 532.0 KiB
#73 Accepted 4ms 532.0 KiB
#74 Accepted 5ms 532.0 KiB
#75 Accepted 4ms 532.0 KiB
#76 Accepted 4ms 536.0 KiB
#77 Accepted 4ms 532.0 KiB
#78 Accepted 4ms 536.0 KiB
#79 Accepted 4ms 532.0 KiB
#80 Accepted 4ms 532.0 KiB
#81 Accepted 70ms 1.27 MiB
#82 Accepted 69ms 1.312 MiB
#83 Accepted 72ms 1.27 MiB
#84 Accepted 68ms 1.27 MiB
#85 Accepted 69ms 1.305 MiB
#86 Accepted 68ms 1.27 MiB
#87 Accepted 69ms 1.27 MiB
#88 Accepted 72ms 1.27 MiB
#89 Accepted 74ms 1.27 MiB
#90 Accepted 70ms 1.289 MiB
#91 Accepted 86ms 8.023 MiB
#92 Accepted 88ms 8.145 MiB
#93 Accepted 91ms 8.02 MiB
#94 Accepted 42ms 8.062 MiB
#95 Accepted 41ms 8.02 MiB
#96 Accepted 92ms 8.164 MiB
#97 Accepted 83ms 8.133 MiB
#98 Accepted 38ms 8.066 MiB
#99 Accepted 38ms 8.02 MiB
#100 Accepted 38ms 8.02 MiB

Code

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

const ll N = 2e5+7;
ll node[N];

ll query(ll index) {
    ll ans = 0;
    while(index > 0) {
        ans = max(ans, node[index]);
        index -= index & (-index);
    }
    return ans;
}

void update(ll index, ll value, ll n) {
    while(index <= n) {
        node[index] = max(node[index], value);
        index += index & (-index);
    }
}

signed main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    int tc; cin >> tc;

    while(tc--) {
        ll n; cin >> n;
        for (ll i = 0; i <= n; i++) node[i] = 0;

        vector<ll> a(n), b(n);
        for (auto &u : a) cin >> u;
        for (auto &u : b) cin >> u;

        vector<ll> temp(a.begin(), a.end());
        sort(temp.begin(), temp.end());
        temp.erase(unique(temp.begin(), temp.end()), temp.end());
        for (ll i = 0; i < n; i++) a[i] = lower_bound(temp.begin(), temp.end(), a[i]) - temp.begin() + 1;

        ll m = temp.size();
        vector<ll> dp(n);
        ll mxAns = 0;
        for (ll i = 0; i < n; i++) { 
            ll best = query(a[i]-1) + b[i];
            dp[i] = best;
            update(a[i], best, m);
            mxAns = max(mxAns, best);
        }

        ll current = mxAns, indx = n;
        for (ll i = n-1; i >= 0; i--) {
            if (dp[i] == current) {
                indx = i;
                current -= b[i];
            }
        }

        cout << n - indx << "\n";
    }
}

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:15:18
Judged At
2025-09-02 17:15:18
Judged By
Score
100
Total Time
92ms
Peak Memory
8.164 MiB