TLE求助
  • 板块P11244 吻秋
  • 楼主protractor半圆仪
  • 当前回复10
  • 已保存回复11
  • 发布时间2024/11/3 21:01
  • 上次更新2024/11/4 11:04:00
查看原帖
TLE求助
964822
protractor半圆仪楼主2024/11/3 21:01

按讲评说的来,为啥炸了

#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;
}`

是我哪里理解错了吗
谢谢大佬们帮忙

2024/11/3 21:01
加载中...