40分求助(8、9TLE,2、3、4、5WA)
查看原帖
40分求助(8、9TLE,2、3、4、5WA)
564225
dontwannacry楼主2022/7/17 17:31
#include<bits/stdc++.h>
using namespace std;
int x[200010];
struct kkk{
	int s,e;
	bool li,lo;
	int fa,son;
}a[200010];
int len = 0,n;
int r = -1;
int main(){
	scanf("%d",&n);
	for(int i = 1;i <= n;++i){
		a[i].fa = a[i].son = i;
		scanf("%d",&x[i]);
		if(x[i] != r){
			r = x[i];
			++len;
			a[len].s = a[len].e = i;
			a[len].li = 1;a[len].lo = 0;
			continue;
		}
		if(x[i] == r){
			a[len].e++;
		}
	}
	int num = len;
	while(num > 0){
		for(int i = 1;i <= len;++i){
			if((!a[i].lo)&&a[i].li){
				printf("%d ",a[i].s++);
				if(a[i].s > a[i].e){
					num--;
					a[i].li = 0;
					a[i + 1].fa = i-1;
					a[i - 1].son = i+1;
				}
			}
		}
		for(int i = len;i >= 1;--i){
			if(a[i].li != 1){
				if(a[i].son != i){
					if(a[a[i].fa].li){
						a[a[i].fa].son = a[i].son;
						a[a[i].son].fa = a[i].fa;
					}else{
						a[a[i].son].lo = 0;
					}
				}
			}else{
				if(a[i].son != i){
					a[a[i].son].lo = 1;
				}
			}
		}
		cout <<"\n";
	}
	return 0;
}
2022/7/17 17:31
加载中...