Submission #1178861

#TimeUsernameProblemLanguageResultExecution timeMemory
1178861MuhammetSeptember (APIO24_september)C++20
59 / 100
117 ms19208 KiB
#include "bits/stdc++.h"
#include "september.h"
// #include "stub.cpp"

using namespace std;

const int N = 1e5 + 5;

int ind[10][N], a[10][N], m;

vector <vector <int>> v;

void dfs(int x) {
	for(auto i : v[x]) {
		dfs(i);
	}
	for(int i = 0; i < m; i++) {
		a[i][x] = ind[i][x];
	}
	for(auto i : v[x]) {
		for(int j = 0; j < m; j++) {
			a[j][x] = max(a[j][x], a[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, a[j][s[j][i]]);
		}
		if(x == i) 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...