50分不是RE就是MLE求救啊!!
查看原帖
50分不是RE就是MLE求救啊!!
1099417
FYH666666楼主2024/8/5 16:24

超清晰代码:

#include<bits/stdc++.h>
#include<deque>
using namespace std;
struct sg{
	int zl,bh;/*种类 编号*/	
}a;
int e1,sr_e=-1,sl/*输入用*/;
deque<sg> q[100005];
queue<int> ans[100005];
int n,f,cnt,e2;
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&e1);
		a.bh=i;
		a.zl=e1;
		if(e1!=sr_e){
			sl++;
			sr_e=e1;	
		} 
		q[sl].push_back(a);
	}
	/*for(int i=1;i<=sl;i++){
		while(!q[i].empty()){
			printf("%d ",q[i].front().bh);
			q[i].pop();
		}
		printf("\n");
	}*/
	while(f<sl){
		cnt++;
		for(int i=1;i<=sl;i++){
			if(!q[i].empty()){
				e1=q[i].front().bh;
				q[i].pop_front();
				if(!q[i].empty()){
					e2=i-1;
					while(q[e2].empty()){
						e2--;
						if(e2==0) break;
					}
					if(e2>0&&q[e2].back().zl==q[i].front().zl){
						while(!q[i].empty()){
						a.bh=q[i].front().bh;
						a.zl=q[i].front().zl;
						q[i].pop_front();
						q[e2].push_back(a);
						}
					}
				}
				ans[cnt].push(e1);
				if(q[i].empty()) f++;
			}
		}
	}
	for(int i=1;i<=cnt;i++){
		while(!ans[i].empty()){
			printf("%d ",ans[i].front());
			ans[i].pop();
		}
		printf("\n");
	}
	return 0;
} 
2024/8/5 16:24
加载中...