全RE求调
查看原帖
全RE求调
962682
BJqxszx_zhuyukun楼主2024/7/9 12:37
#include<iostream>
#include<queue> 
#include<list>
using namespace std;
const int MAXN=2e5+25;
int n;
int a[MAXN];
list<int> tl;
list<pair<list<int>,bool>> lst;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(i>1&&a[i]==a[i-1]) lst.back().first.push_back(i);
		else{
			tl.push_back(i);
			lst.push_back(make_pair(tl,a[i]));
			tl.clear();
		}
	}
	while(!lst.empty()){
		for(auto it=lst.begin();it!=lst.end();it++){
			if((*it).first.front()==0){
				lst.erase(it);
				continue;
			}
			cout<<(*it).first.front()<<' ';
			(*it).first.pop_front();
			if((*it).first.empty()) lst.erase(it);
		}
		cout<<'\n';
		auto ita=lst.begin(),itb=lst.begin();
		itb++;
		while(itb!=lst.end()){
			if((*ita).second==(*itb).second) (*ita).first.splice((*ita).first.end(),(*itb).first);
			ita++;
			itb++;
		}
	}
	return 0;
}

万分感谢!

2024/7/9 12:37
加载中...