社区讨论

救命!什么地方出问题了??

P5462X龙珠参与者 3已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@mi86czj2
此快照首次捕获于
2025/11/21 09:21
4 个月前
此快照最后确认于
2025/11/21 09:21
4 个月前
查看原帖
只有10pts。。 5555
C
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N], n;
int q[N];
int b[N], num[N];
bool v[N];
int Next[N], pre[N];
int main() {
	cin >> n;
	int top = 0;
	Next[0] = 1;
	for (int i = 1;i <= n;i++) {
		cin >> a[i];
		num[a[i]] = i;
		Next[a[i-1]] = i;
		pre[a[i]] = i - 1;
	}
	for (int i = 1;i <= n;i++) {
		b[i] = a[i];
	}
	sort(b+1,b+n+1);
	reverse(b+1,b+n+1);
	for (int i = 1;i <= n;i++) {
		if(!v[b[i]] && Next[b[i]] != 0 && !v[a[Next[b[i]]]]) {
			q[++top] = b[i];
			q[++top] = a[Next[b[i]]];
			v[b[i]] = 1;
			v[a[Next[b[i]]]] = 1;
			Next[a[pre[b[i]]]] = Next[a[Next[b[i]]]];
			pre[a[Next[b[i]+1]]] = pre[b[i]];
		}
	}
	for (int i = 1;i <= top;i++) cout << q[i] << " ";
	cout << endl; 
	return 0;
}

回复

8 条回复,欢迎继续交流。

正在加载回复...