Submission #12625049


Source Code Expand

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

ll inf = 1e18;
int N;
vector<ll> A;
vector<vector<int>> edge;
vector<ll> ans;
vector<stack<pair<ll, int>>> dp;

void dfs(int now, int pre, int premx) {
    int l = 0, r = N+1;
    while (r-l > 1) {
        int c = (l+r)/2;
        if (dp[c].top().first < A[now]) l = c;
        else r = c;
    }
    int mx = max(premx, l+1);
    ans[now] = mx;
    bool stacked = false;
    if (dp[l+1].top().first > A[now]) {
        dp[l+1].push({A[now], now});
        stacked = true;
    }
    
    for (int nxt : edge[now]) {
        if (nxt == pre) continue;
        dfs(nxt, now, mx);
    }
    
    if (stacked) {
        dp[l+1].pop();
    }
    return;
}

int main() {
    cin >> N;
    A.resize(N+1);
    edge.resize(N+1);
    dp.resize(N+1);
    ans.resize(N+1, 0);
    ans[0] = 1;
    for (int i = 0; i < N; i++) cin >> A[i+1];
    for (int i = 0; i < N-1; i++) {
        int u, v;
        cin >> u >> v;
        edge[u].push_back(v);
        edge[v].push_back(u);
    }
    dp[0].push({0, -1});
    for (int i = 1; i <= N; i++) {
        dp[i].push({inf, -1});
    }
    dfs(1, -1, 0);
    for (int i = 1; i <= N; i++) {
        cout << ans[i] << "\n";
    }
    return 0;
}

Submission Info

Submission Time
Task F - LIS on Tree
User hitoare
Language C++ (GCC 9.2.1)
Score 600
Code Size 1302 Byte
Status AC
Exec Time 354 ms
Memory 172480 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 1
AC × 17
Set Name Test Cases
Sample Sample_01.txt
All Sample_01.txt, caterpillar_01.txt, ni_01.txt, ni_02.txt, ni_03.txt, path_02.txt, path_04.txt, path_07.txt, path_08.txt, rand_01.txt, rand_02.txt, rand_03.txt, rand_04.txt, rand_05.txt, rand_large_01.txt, same_01.txt, star_01.txt
Case Name Status Exec Time Memory
Sample_01.txt AC 2 ms 3384 KiB
caterpillar_01.txt AC 344 ms 157724 KiB
ni_01.txt AC 2 ms 3396 KiB
ni_02.txt AC 2 ms 3400 KiB
ni_03.txt AC 2 ms 3320 KiB
path_02.txt AC 354 ms 165896 KiB
path_04.txt AC 343 ms 154564 KiB
path_07.txt AC 341 ms 159020 KiB
path_08.txt AC 354 ms 164568 KiB
rand_01.txt AC 13 ms 3420 KiB
rand_02.txt AC 2 ms 3376 KiB
rand_03.txt AC 2 ms 3448 KiB
rand_04.txt AC 2 ms 3388 KiB
rand_05.txt AC 2 ms 3356 KiB
rand_large_01.txt AC 350 ms 150864 KiB
same_01.txt AC 322 ms 172480 KiB
star_01.txt AC 325 ms 151432 KiB