Submission #1349789

#TimeUsernameProblemLanguageResultExecution timeMemory
1349789blameazu9월 (APIO24_september)C++20
100 / 100
55 ms7880 KiB
#include "september.h"

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

int solve(int n, int m, vector<int> F, vector<vector<int> > S) {
	int ans = 0;
	vector<vector<int> > ok(m, vector<int> (n));
	for(int l = 0; l < m; l++) {
		int now = 0;
		vector<int> in(n), vis(n);
		for(int i = 1; i < n; i++) in[F[i]]++;
		for(int i = 0; i < n-1; i++) {
			now++;
			vis[S[l][i]] = 1;
			if(in[S[l][i]] == 0) now--;
			in[F[S[l][i]]]--;
			if(vis[F[S[l][i]]] && in[F[S[l][i]]] == 0) now--;
			ok[l][i] = (now == 0);
		}
	}
	// for(int i = 0; i < n; i++) cout << ok[0][i] << " \n"[i==n-1];
	vector<int> cnt(n);
	int CNT = 0;
	for(int i = 0; i < n-1; i++) {
		int OK = 1;
		for(int j = 0; j < m; j++) {
			cnt[S[j][i]]++;
			if(cnt[S[j][i]] == m) CNT++;
			OK &= ok[j][i];
		}
		if(OK && CNT == i+1) ans++;
	}
	return ans;
}

/*
6
5 1
0 1 2 3 
4 3 2 1
5 1
0 1 2 3
4 1 2 3
5 1
0 1 2 3
4 3 1 2
5 1
0 1 2 3
1 2 3 4
5 1
0 1 2 3
3 2 1 4
5 1
0 1 2 3
2 4 3 1
*/
#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...