求调(玄2关)
查看原帖
求调(玄2关)
1610290
no_response楼主2025/8/31 09:43

TLE on #6,#8,#9,#10。

#include <bits/stdc++.h>
using namespace std;
struct fruit {
	int nxt, pre, id, l;
} a[200010];
int main() {
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		scanf("%d", &a[i].l);
		a[i].id = i;
		if (i != n) {
			a[i].nxt = i + 1;
		}
		if (i != 1) {
			a[i].pre = i - 1;
		}
	}
	int head = 1;
	while (a[head].nxt != 0) {
		int x = head,  y = a[head].l;
		printf("%d ", a[x].id);
		head = a[head].nxt;
		while (a[x].nxt != 0) {
			x = a[x].nxt;
			if (a[x].l != y) {
				printf("%d ", a[x].id);
				y = a[x].l;
				if (x == head) {
					head = a[x].nxt;
				}
				int tmp = x;
				a[a[tmp].pre].nxt = a[x].nxt;
				a[a[x].nxt].pre = a[tmp].pre;
			}			
		}
		printf("\n");
	}
	if (head != 0) {
		printf("%d ", a[head].id);;
	}
	return 0;
}
2025/8/31 09:43
加载中...