Submission #1357556

#TimeUsernameProblemLanguageResultExecution timeMemory
1357556silence25September (APIO24_september)C++20
100 / 100
101 ms22320 KiB
#include "september.h"
#include "bits/stdc++.h"
#define ff first
#define ss second
#define pp pop_back
#define ll long long
#define pb push_back
#define ls(v) (int)v.size()
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
#define wr cout << "------------------------" << endl
using namespace std;
const int NN = 1e5 + 5;
vector<vector<int>> g;
int idx[NN][10];
int n, m;

void dfs(int nd){
	for(auto it:g[nd]){
		dfs(it);
		for(int i = 0;i<m;++i) idx[nd][i] = max(idx[nd][i], idx[it][i]);
	}
}

int solve(int N, int M, vector<int> F, vector<vector<int>> S) {
	n = N, m = M;
	
	for(int i = 0;i<m;++i){
		for(int j = 0;j<n - 1;++j){
			idx[S[i][j]][i] = j;
		}
	}
	g.clear();
	g.resize(n);
	for(int i = 1;i<n;++i) g[F[i]].pb(i);
	dfs(0);
	int ans, x;
	ans = x = 0;
	for(int i = 0;i<n - 1;++i){
		for(int j = 0;j<m;++j){
			x = max(x, idx[S[0][i]][j]);
		}
		if(x == i) ans += 1, x += 1;
	}
	return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...