求代码复杂度
  • 板块P11244 吻秋
  • 楼主zyn0309
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/3 09:50
  • 上次更新2024/11/3 09:51:27
查看原帖
求代码复杂度
864310
zyn0309楼主2024/11/3 09:50
#include<bits/stdc++.h>
using namespace std;
const int N=2e6+10;
int n,m,q,a[N],aa[2*N],id[25];
bool b[25];
char buf[1<<20],*p1,*p2;
#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin), p1 == p2) ? 0 : *p1++)
int read(){
	int x=0,f=1;
	char c;
	c=getchar();
	if(c=='-')f=-1,c=getchar();
	while(c>='0'&&c<='9'){
	  x=x*10+c-'0';
	  c=getchar();
	}
	return x*f;
}
signed main(){
	n=read();
	m=read();
	q=read();
	for(int i=1;i<=m;++i){
	  for(int j=1;j<=n;++j){
	  	a[(i-1)*n+j]=read();
	  }
	  id[i]=i;
	}
	int opt,x,y;
	for(int i=1;i<=q;++i){
	  opt=read();
	  x=read();
	  y=read();
	  if(opt==2){
	  	printf("%d\n",a[(id[x]-1)*n+y]);
	  }
	  else{
	  	if(b[id[x]]&&b[id[y]]){
	  	  if(a[id[x]*n]<=a[(id[y]-1)*n+1])continue;
	  	  if(a[(id[x]-1)*n+1]>=a[id[y]*n]){
	  	  	swap(id[x],id[y]);
	  	  	continue;
		  }
		}
	  	for(int j=1;j<=n;++j){
	  	  aa[j]=a[(id[x]-1)*n+j];
	  	  aa[j+n]=a[(id[y]-1)*n+j];
		}
		sort(aa+1,aa+1+2*n);
		for(int j=1;j<=n;++j){
	  	  a[(id[x]-1)*n+j]=aa[j];
	  	  a[(id[y]-1)*n+j]=aa[j+n];
		}
		b[id[x]]=b[id[y]]=1;
	  }
	}
	return 0;
}
2024/11/3 09:50
加载中...