Submission #1156699

#TimeUsernameProblemLanguageResultExecution timeMemory
1156699KhoaDuySeptember (APIO24_september)C++17
100 / 100
69 ms7408 KiB
#include<bits/stdc++.h>
using namespace std;
int solve(int n,int m,vector<int> pa,vector<vector<int>> s){
    int idx[m][n];
    int req[n];
    for(int i=0;i<m;i++){
        for(int j=0;j<n-1;j++){
            idx[i][s[i][j]]=j;
        }
    }
    req[0]=-1;
    for(int i=n-1;i>0;i--){
        req[i]=idx[0][i];
    }
    for(int i=n-1;i>0;i--){
        req[pa[i]]=max(req[pa[i]],req[i]);
    }
    int bst=-1,maxidx[m],minidx[m];
    int ans=0;
    for(int i=0;i<m;i++){
        maxidx[i]=-1,minidx[i]=n+1;
    }
    for(int j=0;j<n-1;j++){
        bst=max(bst,req[s[0][j]]);
        for(int i=0;i<m;i++){
            maxidx[i]=max(maxidx[i],idx[i][s[0][j]]);
            minidx[i]=min(minidx[i],idx[i][s[0][j]]);
        }
        if(bst<=j){
            bool flag=true;
            for(int i=0;i<m;i++){
                if(minidx[i]!=0||maxidx[i]!=j){
                    flag=false;
                    break;
                }
            }
            if(flag){
                ans++;
            }
        }
    }
    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...