Submission #39075029


Source Code Expand

#include <bits/stdc++.h>

using namespace std;
using i64 = long long;
const int mod = 998244353;
const int N = 1e5 + 10;
#define endl '\n'

struct seg
{
#define ls (u << 1)
#define rs (ls | 1)
#define mid ((l + r) >> 1)
#define lson ls,l,mid
#define rson rs,mid+1,r
    struct info
    {
        i64 mx;
        info(){mx = 0;}
        info operator+(const info &a) const
        {
            info b;
            b.mx = max(mx, a.mx);
            return b;
        }
    };
    vector<info> tr;
    seg(int n) : tr((n << 2) + 10){};
    void pushup(int u) { tr[u] = tr[ls] + tr[rs]; }
    void modify(int u,int l,int r,int L,int R, i64 x){
        if(l>R||r<L)return;
        if(l>=L&&r<=R){
            tr[u].mx = x;
            return;
        }
        modify(lson,L,R,x),modify(rson,L,R,x);
        pushup(u);
    }
    i64 query(int u,int l,int r,int L,int R){
        if(l>R||r<L)return 0;
        if(l>=L&&r<=R)return tr[u].mx;
        return max(query(lson,L,R),query(rson,L,R));
    }
};

void solve()
{
    int n;
    cin >> n;
    vector<i64> h(n + 1), a(n + 1);
    for(int i = 1; i <= n; i++){
        cin >> h[i];
    }
    for(int i = 1; i <= n; i++){
        cin >> a[i];
    }
    seg t(n);
    i64 mx = 0;
    for(int i = 1; i <= n; i++){
        i64 sum = t.query(1, 1, n, 1, h[i]) + a[i];
        mx = max(mx, sum);
        t.modify(1, 1, n, h[i], h[i], sum);
    }
    cout << mx << endl;
}
int main()
{
#ifdef ONLINE_JUDGE
    ios::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
#endif
    int _ = 1;
    //cin >> _;
    while (_--)
        solve();
}

Submission Info

Submission Time
Task Q - Flowers
User Jadebo1
Language C++ (GCC 9.2.1)
Score 100
Code Size 1669 Byte
Status AC
Exec Time 108 ms
Memory 12672 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 22
Set Name Test Cases
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17
Case Name Status Exec Time Memory
0_00 AC 10 ms 3620 KiB
0_01 AC 4 ms 3492 KiB
0_02 AC 2 ms 3560 KiB
0_03 AC 4 ms 3492 KiB
1_00 AC 3 ms 3636 KiB
1_01 AC 78 ms 12588 KiB
1_02 AC 77 ms 12528 KiB
1_03 AC 76 ms 12656 KiB
1_04 AC 76 ms 12584 KiB
1_05 AC 81 ms 12668 KiB
1_06 AC 78 ms 12604 KiB
1_07 AC 79 ms 12660 KiB
1_08 AC 77 ms 12592 KiB
1_09 AC 85 ms 12524 KiB
1_10 AC 108 ms 12532 KiB
1_11 AC 104 ms 12596 KiB
1_12 AC 105 ms 12660 KiB
1_13 AC 103 ms 12616 KiB
1_14 AC 105 ms 12672 KiB
1_15 AC 103 ms 12596 KiB
1_16 AC 105 ms 12668 KiB
1_17 AC 102 ms 12660 KiB