Submission #1179038

#TimeUsernameProblemLanguageResultExecution timeMemory
1179038GurbanSeptember (APIO24_september)C++20
100 / 100
115 ms11712 KiB
#include "september.h"
#include <bits/stdc++.h>
using namespace std;

const int maxn=1e5+5;
int vis[maxn];
int num[maxn];
int cnt[maxn];
vector<int>E[maxn];

int solve(int N, int M, vector<int> F, vector<vector<int>> S){
	for(int i = 0;i < N;i++) E[i].clear(), vis[i] = 0, num[i] = 0, cnt[i]=0;
	for(int i = 1;i < N;i++) E[F[i]].push_back(i), num[F[i]]++;
	int K = 0;
	vector<set<int>>v(M);
	int bad = 0;
	int un = 0;
	for(int i = 0;i < N-1;i++){
		for(int j = 0;j < M;j++){
			v[j].insert(S[j][i]);
			if(vis[S[j][i]] == 0){
				un++;
				vis[S[j][i]] = 1;

				bad += num[S[j][i]];
				num[F[S[j][i]]]--;
				if(vis[F[S[j][i]]] == 1) bad--;
			}
			cnt[S[j][i]]++;
			if(cnt[S[j][i]] == M) un--;
		}
		if(bad == 0 and un == 0){
			K++;
			bad = 0;
			un = 0;
			for(int j = 0;j < M;j++) v[j].clear();
		}
	}
	return K;
}
#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...