比赛 期末考试2 评测结果 MMMMMMMMMM
题目名称 魔法 最终得分 0
用户昵称 郑霁桓 运行时间 0.008 s
代码语言 C++ 内存使用 1.33 MiB
提交时间 2026-02-10 10:38:00
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,k,q,ppp,a[13][100005],t[5000],ps,b[100050][4100],f[100005],op,x,y,ab[5050][5005];
vector<int>v;
int main(){
	freopen("breeding.in","r",stdin);
	freopen("breeding.out","w",stdout);
	ios::sync_with_stdio(false);
	cin>>n>>k>>q,ppp=1;
	for(int i=1;i<=k;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
			if(a[i][j]>2) ppp=0;
		}
	}
	if(ppp){
		for(int i=1;i<=n;i++){
			f[i]=i,ps=0;
			for(int j=1;j<=k;j++){
				a[j][i]--;
				ps*=2;
				ps+=a[j][i];
			}
			if(t[ps]) f[i]=f[t[ps]];
			else{
				t[ps]=i,v.push_back(i),f[i]=v.size()-1;
				for(int j=1;j<=k;j++) b[j][v.size()-1]=a[j][i];
			}
		}
		while(q--){
			cin>>op>>x>>y;
			if(op==1){
				k++;
				for(int i=0;i<v.size();i++){
					b[k][i]=max(b[x][i],b[y][i]);
				}
			}else if(op==2){
				k++;
				for(int i=0;i<v.size();i++){
					b[k][i]=min(b[x][i],b[y][i]);
				}
			}else{
				cout<<b[x][f[y]]+1<<"\n";
			}
		}
		return 0;
	}
	for(int i=1;i<=k;i++){
		for(int j=1;j<=n;j++) ab[i][j]=a[i][j];
	}
	while(q--){
		cin>>op>>x>>y;
		if(op==1){
			k++;
			for(int i=1;i<=n;i++) ab[k][i]=max(ab[x][i],ab[y][i]);
		}else if(op==2){
			k++;
			for(int i=1;i<=n;i++) ab[k][i]=min(ab[x][i],ab[y][i]);
		}else{
			cout<<ab[x][y]<<"\n";
		}
	}
    return 0;
}