Submission #1353861

#TimeUsernameProblemLanguageResultExecution timeMemory
1353861JungPSSeptember (APIO24_september)C++20
45 / 100
84 ms2468 KiB
#include "september.h"

#include <bits/stdc++.h>
using namespace std;

int degree[100007];
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
	for(int i=0;i<N;++i) degree[i]=0;
	for(int i=1;i<N;++i) ++degree[F[i]];
	multiset<pair<int,int>,greater<pair<int,int>>> st[M];
	int cnt=0;
	for(int r=0;r<N-1;++r){
		for(int c=0;c<M;++c){
			if(st[c].count({degree[F[S[c][r]]],F[S[c][r]]})){
				st[c].erase({degree[F[S[c][r]]],F[S[c][r]]});
				st[c].insert({degree[F[S[c][r]]]-1,F[S[c][r]]});
			}
			--degree[F[S[c][r]]];
			st[c].insert({degree[S[c][r]],S[c][r]});
		}
		bool ok=true;
		for(int c=0;c<M;++c){
			if((*st[c].begin()).first!=0){
				ok=false;
			}
		}
		if(ok){
			for(int c=0;c<M;++c) st[c].clear();
			++cnt;
		}
	}

	return cnt;
}
#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...