按讲评说的来,为啥炸了
#include<iostream>
#include<cstring>
#include<algorithm>
#define seq(x) yx[p[x]]
#define a(x,y) a[p[x]*n-n+y]
#define maxx(x) mx[p[x]]
#define minn(x) mn[p[x]]
#define px(x,y) (mn[p[x]]>=mx[p[y]])
using namespace std;
int a[2000050];
int b[2000050];
int mx[50],mn[50],yx[50];
int p[50];
int n,m,q;
int x,y,op;
int main()
{
memset(mn,0x3f,sizeof(mn));
cin>>n>>m>>q;
for(int i=1;i<=m;i++)
{
p[i]=i,yx[i]=1;
for(int j=1;j<=n;j++)
{
cin>>a(i,j);
mx[i]=max(mx[i],a(i,j));
mn[i]=min(mn[i],a(i,j));
if(a(i,j)<a(i,j-1)) seq(i)=0;
}
}
for(int ii=1;ii<=q;ii++)
{
cin>>op>>x>>y;
if(op==1)
{
if(!seq(x)) sort(&a(x,1),&a(x,n+1));
if(!seq(y)) sort(&a(y,1),&a(y,n+1));
if(px(y,x)) continue;
else if(px(x,y)) swap(p[x],p[y]);
else
{
for(int i=1,j=1;i<=n||j<=n;)
{
if((i<=n&&a(x,i)<a(y,j))||j>n)
{
b[i+j-1]=a(x,i);
i++;
}
else
{
b[i+j-1]=a(y,j);
j++;
}
}
for(int i=1;i<=n;i++) a(x,i)=b[i];
for(int i=1;i<=n;i++) a(y,i)=b[n+i];
maxx(x)=b[n],minn(x)=b[1];
maxx(y)=b[n*2],minn(y)=b[n+1];
}
}
else cout<<a(x,y)<<'\n';
/*for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++) cout<<a(i,j)<<' ';
cout<<'\n';
}*/
}
return 0;
}`
是我哪里理解错了吗
谢谢大佬们帮忙