28 分求助
查看原帖
28 分求助
490484
include13_fAKe楼主2024/12/14 22:43
#include<bits/stdc++.h>
using namespace std;

int n;
int p[3*114514];	//数 
int p1[3*114514];	//反矩阵 
int q[3*114514];	//所属的团的编号  
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>p[i];
		p1[p[i]]=i;
	}
	for(int i=1;i<=n;i++){
		int j=p1[i];
		if(q[j])	continue;
		int flag=-1;
		q[j]=j;
		int col=j;
		cout<<p[j]<<' ';
//		cout<<j<<endl;
		if(!q[j-1]&&p[j-1]>p[j])	flag=1;
		if(!q[j+1]&&p[j+1]>p[j]&&p[j+1]>p[j-1])	flag=2;
		if(flag==1){
			while(p[j-1]>p[j]&&!q[j-1])	j--,q[j]=col,cout<<p[j]<<' ';
		}
		if(flag==2){
			while(p[j+1]>p[j]&&!q[j+1])	j++,q[j]=col,cout<<p[j]<<' ';
		}
//		cout<<endl;
	}
	cout<<endl;
	return 0;
}//0+100+150(70+40+40)+207(84+56+67)=457 Au 
2024/12/14 22:43
加载中...