#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; }
标签:node,index,int,na,行祭,long,122,模拟,define From: https://www.cnblogs.com/Kudo-Shinich/p/17632658.html