大佬们哪里有问题啊(玄关)
查看原帖
大佬们哪里有问题啊(玄关)
1199534
ycy1124楼主2024/4/13 16:08
#include<bits/stdc++.h>
using namespace std;
void read(int &x)
{
	int f=1;
	x=0;
	char ch=getchar();
	while((ch>'9'||ch<'0')&&ch!='-')
	{
		ch=getchar();
	}
	if(ch=='-')
	{
		f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x*=10;
		x+=ch-'0';
		ch=getchar();
	}
	x*=f;
}
struct gz{
	int l,r,kl,kr;
	int lb;
	bool pd=0;
}a[int(2*1e5+1)];
int main()
{
	int n,t=1,yt=1;
	read(n);
	for(int j=1;j<=n;j++)
	{
		read(a[j].lb);
	}
	for(int j=1;j<=n;j++)
	{
		int bj=1;
		if(a[bj].lb!=a[j].lb)
		{
			a[bj].kr=j;
			a[j].kl=bj;
			bj=j;
		}
		else
		{
			a[j].kl=a[bj].kl;
			a[j].kr=a[bj].kr;
			a[j].l=j-1;
			a[j-1].r=j;
		}
	}
	while(n)
	{
		t=yt;
		while(t!=0)
		{
			a[t].pd=1;
			printf("%d ",t);
			t=a[t].kr;
			n--;
		}
		printf("\n");
		while(a[yt].pd)
		{
			yt=a[yt].r;
		}
		for(int i=1;i<=n;i++)
		{
			if(!a[i].pd)
			{
				int t=a[i].kr;
				while(a[t].r!=0&&a[t].pd)
				{
					t=a[t].r;
				}
				if(a[t].pd)
				{
					a[a[t].kl].kr=a[a[t].kr].kr;
				}
			}
		}
	}
	return 0;
}
2024/4/13 16:08
加载中...