Submission #1294290

#TimeUsernameProblemLanguageResultExecution timeMemory
1294290eri16September (APIO24_september)C++20
45 / 100
159 ms14124 KiB
#include <bits/stdc++.h>
using namespace std;

void dfs(vector <vector<int>>& child,vector<int>& maxpos, int u){
    for (int i=0; i<child[u].size(); i++){
        dfs(child,maxpos,child[u][i]);
        maxpos[u]=max(maxpos[u],maxpos[child[u][i]]);
    }
}


int solve(int n, int m, vector<int> v1,vector<vector<int>> v2){
    
    vector <int> maxpos(n);
    
    vector <vector<int>> child(n);
    
    for (int i=1; i<n; i++){
        child[v1[i]].push_back(i);
    }
    
    for (int i=0; i<n-1; i++){
        maxpos[v2[0][i]]=max(maxpos[v2[0][i]],i);
    }
    
    dfs(child,maxpos,0);
    
    int ans=0;
    int cur=-1;
    
    for (int i=0; i<n-1; i++){
        if (cur<i){ans++;}
        cur=max(cur,maxpos[v2[0][i]]);
    }    
    /*
    for (int i=0; i<n; i++){
        cout<<maxpos[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...