60分求助(TLE
查看原帖
60分求助(TLE
652856
MaxPAN楼主2023/6/26 16:45
#include "iostream"
using namespace std;

int n,a[200005],l[200005],r[200005],tmp[200005];//双向链表

int main(){
	ios::sync_with_stdio(false);
	freopen("fruit.in","r",stdin);
	freopen("fruit.out","w",stdout);
	cin >> n;
	a[0] = 114514;//或者其他任何大于1的整数
	for(int i = 1;i <= n; i++){
		cin >> a[i];
		r[i] = i + 1;
		l[i] = i - 1;
	}
	r[0] = 1;
	a[n + 1] = a[n];
	int cnt = 0;
	while(cnt < n){
		int k = 0,ncnt = cnt;
		while(k <= n){
			if(k != 0 && a[k] != a[l[k]]) tmp[++cnt] = k;
			k = r[k];
//			cout << k << " " << cnt << endl;
		}
		for(int i = ncnt + 1;i <= cnt; i++){
			cout << tmp[i] << " ";
			r[l[tmp[i]]] = r[tmp[i]];
			l[r[tmp[i]]] = l[tmp[i]];
		}
		cout << endl;
	}
	
	return 0;
}

林克

2023/6/26 16:45
加载中...