晚上切模拟122行祭

发布时间 2023-08-15 22:49:34作者: Anchedong
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define ld long double
#define gcd(a,b) __gcd(a,b)
using namespace std;
const int INF=INT_MAX;
int n,m,g;
map<int,int> region[1005];
struct Node{
	int r;
	int cnt;
	map<int,int> vis;
	int index;
}; 
Node node[1005];
int vis[1005]={0};
void insert1(int na){
	if(na==0){
		for(int i=1;i<=n;++i)
		  vis[i]++;
	}
	else{
		for(int i=1;i<=n;++i)
		  if(node[i].r==na)
		    vis[i]++;
	}
}
void insert2(int pa){
	if(pa==0){
		for(int i=1;i<=n;++i)
		  vis[i]++;
	}
	else{
		for(int i=1;i<=n;++i)
		  if(region[node[i].r][pa]==1)
		    vis[i]++;
	}
}
void insert3(int paa){
	if(paa==0){
		for(int i=1;i<=n;++i)
		  vis[i]++;
	}
	else{
		for(int i=1;i<=n;++i)
		  if(node[i].vis.find(paa)==node[i].vis.end())
		    vis[i]++;
	}
}
int maxNode(vector<Node> tnode){
	int ans=tnode[0].index;
	for(int i=1;i<tnode.size();++i){
		if(tnode[i].cnt<node[ans].cnt)
		  ans=tnode[i].index;
		else if(tnode[i].cnt==node[ans].cnt && tnode[i].index<node[ans].index)
		  ans=tnode[i].index;
	}
	return ans;
}
void insertNode(int a,int index){
	node[index].vis[a]=1;
	node[index].cnt++;
	region[node[index].r][a]=1;
	cout<<index<<' ';
}
void insert(int a,int na,int pa,int paa,int paar){
	memset(vis,0,sizeof(vis));
	insert1(na);
	insert2(pa);
	insert3(paa);
	vector<Node> tempans;
	for(int i=1;i<=n;++i){
		if(vis[i]==3)
		  tempans.push_back(node[i]);
	}
	if(tempans.size()!=0){
		int index=maxNode(tempans);
		insertNode(a,index);
		return ;
	}
	if(paa!=0 && paar==0){
		memset(vis,0,sizeof(vis));
		insert1(na);
		insert2(pa);
		for(int i=1;i<=n;++i){
			if(vis[i]==2)
			  tempans.push_back(node[i]);
		}
	}
	if(tempans.size()!=0){
		int index=maxNode(tempans);
		insertNode(a,index);
		return ;
	}
	cout<<0<<' ';
}
void solve(){
	cin>>n>>m;
	for(int i=1;i<=n;++i){
		int a;
		cin>>a;
		node[i].r=a;
		node[i].index=i;
	}
	cin>>g;
	for(int i=0;i<g;++i){
		int f,a,na,pa,paa,paar;
		cin>>f>>a>>na>>pa>>paa>>paar;
		while(f--){
			insert(a,na,pa,paa,paar);
		}
		cout<<endl;
	}
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	solve();
	return 0;
}