Submission #1178873

#TimeUsernameProblemLanguageResultExecution timeMemory
1178873MuhammetSeptember (APIO24_september)C++20
100 / 100
115 ms17088 KiB
#include "bits/stdc++.h"
#include "september.h"
// #include "stub.cpp"

using namespace std;

const int N = 2e5 + 5;

int ind[10][N], m;

vector <vector <int>> v;

void dfs(int x) {
	for(auto i : v[x]) {
		dfs(i);
	}
	for(auto i : v[x]) {
		for(int j = 0; j < m; j++) {
			ind[j][x] = max(ind[j][x], ind[j][i]);
		}
	}
	return;
}

int solve(int n, int M, vector<int> f, vector<vector<int>> s) {
	m = M;
	for(int i = 0; i < m; i++) {
		for(int j = 0; j < n - 1; j++) {
			ind[i][s[i][j]] = j;
		}
	}

	v.clear();
	v.resize(n);
	for(int i = 1; i < n; i++) {
		v[f[i]].push_back(i);
	}

	dfs(0);

	int x = 0, ans = 0;
	for(int i = 0; i < n - 1; i++) {
		for(int j = 0; j < m; j++) {
			x = max(x, ind[j][s[0][i]]);
		}
		if(x == i) ans++, x++;
	}

	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...