求捞,RE
查看原帖
求捞,RE
737273
digua2010楼主2024/8/14 09:06

评测结果

本题我自己造了几个样例都过了,但是交上去就RE了。。。求捞

#include <bits/stdc++.h>
using namespace std;

const int N = 1e6 + 10;
struct node {
	int w, l, r;
} edge[N];
int n, a[N];
bool cmp(node x, node y) {
	return x.w < y.w;
}
int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i ++) {
		scanf("%d", &a[i]);
		edge[i].w = a[i];
	}
	for (int i = 1; i < n; i++) {
		edge[i].r = i + 1;
	}
	for (int i = n; i >= 1; i--) {
		edge[i].l = i - 1;
	}
	sort(edge + 1, edge + 1 + n, cmp);
	long long ans = 0;
	for (int i = 2; i <= n; i++) {
		if (edge[i].w > a[edge[i].l]) {
			if (edge[i].l > 0 && edge[i].l <= n) {
				ans += max(edge[i].w, a[edge[i].l]);
				edge[i].l = edge[edge[i].l].l;
				edge[edge[i].l].r = edge[i].w;
			}
		}
		if (edge[i].w > a[edge[i].r]) {
			if (edge[i].r > 0 && edge[i].r <= n) {
				ans += max(edge[i].w, a[edge[i].r]);
				edge[i].r = edge[edge[i].r].r;
				edge[edge[i].r].l = edge[i].w;
			}
		}
	}
	cout << ans;
	/*
	4
	3 1 4 2
	*/

	return 0;
}
2024/8/14 09:06
加载中...