求调(赏关)
查看原帖
求调(赏关)
902351
Little_x_starTYJ楼主2023/8/10 10:35
#include <iostream>
using namespace std;
int a[100010];
int b[100010];
int main() {
	int t;
	cin >> t;
	while (t--) {
		int n;
		long long s = 0;
		cin >> n;
		for (int i = 1; i <= n; i++) {
			cin >> a[i];
			s += a[i];
		}
		if (n == 2) {
			if (a[1] < 0 || a[2] < 0)
				puts("NO");
			else
				puts("YES");
		}
		long long max2 = -2147483647;
		int l = 1;
		b[1] = a[1];
		for (int i = 2; i <= n; i++) {
			b[i] = -2147483647;
			if (b[i - 1] + a[i] > a[i]) {
				if (l == 1 && i == n)
					continue;
				b[i] = b[i - 1] + a[i];
			}
			else {
				b[i] = a[i], l = i;
			}
			max2 = b[i] > max2 ? b[i] : max2;
		}
		if (max2 >= s)
			puts("NO");
		else
			puts("YES");
	}
	return 0;
}
2023/8/10 10:35
加载中...