80 pts 求助
查看原帖
80 pts 求助
710974
muyangplus楼主2022/10/9 20:09
#include<stdio.h>
#include<queue>
using namespace std;
const int maxn = 200001;
struct node{
	int l,r,num;
}; 
int n, t;
queue<node> q;

int main(){
	//freopen("frint.in","r",stdin);
	//freopen("frint.out","w",stdout); 
	scanf("%d", &n); 
	int flag=-1;
	for(int i=1;i<=n;i++){
		scanf("%d", &t);
		if (t!=flag){
			q.push(node{i,i,t});
			flag=t;
		}else{
			q.back().r = i;
		}
	}
	while(!q.empty()){
		int len = q.size(), flag=-1;
		for(int i=1;i<=len;i++){
			if(q.front().num != flag){
				printf("%d ", q.front().l);
				q.front().l++;
				flag=q.front().num;
			}
			if(q.front().l <= q.front().r){
				q.push(q.front());
			}
			q.pop();
		}
		printf("\n");
	}
	
	return 0;
} 

2022/10/9 20:09
加载中...