Submission #1194151

#TimeUsernameProblemLanguageResultExecution timeMemory
1194151zh_hSeptember (APIO24_september)C++20
100 / 100
117 ms15552 KiB
#include <bits/stdc++.h>
#define pb push_back
#define lint long long int
using namespace std;

vector<int> mx;
vector<vector<int>> edge;
void dfs(int v) {
    for (auto i : edge[v]) {
        dfs(i);
        mx[v] = max(mx[v], mx[i]);
    }
}

int solve (int n, int m, vector<int> parent, vector<vector<int>> s) {
    edge.clear();
    edge.resize(n);
    for (int i = 1; i < n; i ++) {
        edge[parent[i]].pb(i);
    }

    mx.clear();
    mx.resize(n, -1);
    for (int i = 0; i < m; i ++) {
        for (int j = 0; j < n-1; j ++) {
            mx[s[i][j]] = max(mx[s[i][j]], j);
        }
    }

    dfs(0);

    int cur_mx = 0;
    int cur_i = 0;
    int ans = 0;
    while (cur_i < n-1) {
        ans ++;
        cur_mx = cur_i;
        while (cur_i <= cur_mx && cur_i < n-1) {
            cur_mx = max(cur_mx, mx[s[0][cur_i]]);
            cur_i ++;
        }
    }

    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...