Submission #1226634

#TimeUsernameProblemLanguageResultExecution timeMemory
1226634dizzy_groovySeptember (APIO24_september)C++20
100 / 100
122 ms15520 KiB
#include "september.h"

#include <bits/stdc++.h>

using namespace std;

void dfs(int i, vector<vector<int>> &gr, vector<int> &mx) {
	for (auto &j : gr[i]) {
		dfs(j, gr, mx);
		mx[i] = max(mx[i], mx[j]);
	}
}

int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
	vector<int> mx(N);
	for (int i = 0; i < M; i++) {
		for (int j = 0; j < N - 1; j++) {
			mx[S[i][j]] = max(mx[S[i][j]], j);
		}
	}
	vector<vector<int>> gr(N);
	for (int i = 1; i < N; i++) {
		gr[F[i]].push_back(i);
	}
	dfs(0, gr, mx);
	int cnt = 0;
	int r = 1;
	int cr = 0;
	while (r < N) {
		while (cr < r) {
			for (int i = 0; i < M; i++) {
				r = max(r, mx[S[i][cr]] + 1);
			}
			cr++;
		}
		r++;
		cnt++;
	}
	return cnt;
}
#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...