제출 #1344708

#제출 시각아이디문제언어결과실행 시간메모리
1344708Newtonabc9월 (APIO24_september)C++20
0 / 100
1 ms344 KiB
#include "september.h"
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
vector<int> g[N];
struct UWU{
	//req is unused in st
	set<int> nxt,exc,req,uns;
	void init(){
		for(auto v:g[0]){
			nxt.insert(v);
		}
	}
	void ins(int x){
		if(nxt.find(x)!=nxt.end()){
			nxt.erase(x);
			for(auto v:g[x]){
				if(exc.find(v)!=exc.end()){
					exc.erase(v);
				}
				else nxt.insert(v);
			}
		}
		else exc.insert(x);
	}
};
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
	UWU hode[10];
	UWU st;
	for(int i=1;i<N;i++) g[F[i]].push_back(i);
	st.init();
	int cnt=0;
	for(int i=1;i<M;i++) hode[i].init();
	for(int i=N-2;i>=0;i--){
		//cout<<"I" <<"\n";
		bool cl=true;
		st.ins(S[0][i]);
		// for(auto x:st.nxt) cout<<x <<" ";
		// cout<<"\n";
		// for(auto x:st.exc) cout<<x <<" ";
		// cout<<"\n\n";
		if(!st.exc.empty()) cl=false;
		for(int j=1;j<M;j++) hode[j].ins(S[j][i]);
		//for(int j=1;j<M;j++) if(!hode[j].exc.empty()) cl=false;
		for(int j=1;j<M;j++){
			if(hode[j].uns.find(S[0][i])!=hode[j].uns.end()) hode[j].uns.erase(S[0][i]);
			else hode[j].req.insert(S[0][i]);
			if(hode[j].req.find(S[j][i])!=hode[j].req.end()) hode[j].req.erase(S[j][i]);
			else hode[j].uns.insert(S[j][i]);
		}
		for(int j=1;j<M;j++) if(!hode[j].req.empty()) cl=false;
		if(cl) 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...