求助
查看原帖
求助
226686
Herobrine6265楼主2023/9/14 18:26

如题 https://www.luogu.com.cn/record/124685924

#include<cstdio>
using namespace std;
inline int max(int a, int b) {
	return (a > b) ? a : b;
}
inline int min(int a, int b) {
	return (a < b) ? a : b;
}
int main() {
	int n, sum = 0, ans = 0, pos = 2;
	scanf("%d", &n);
	int dis[n + 5];
	for (int i = 1; i <= n; i++) {
		scanf("%d", &(dis[i]));
		sum += dis[i];
	}
	int s = dis[1];
	dis[0] = 0;
	for (int i = 1; i <= n; i++) {
		s -= dis[i - 1];
		for (int j = pos;; j++) {
			j %= (n + 1);
			if (s >= sum / 2) {
				j--;
				if (min(s, sum - s) >= s - dis[j]) {
					pos = j + 1;
					ans = max(ans, min(s, sum - s));
				} else {
					s -= dis[j];
					pos = j;
					ans = max(ans, s);
				}
				break;
			}
			s += dis[j];
		}
	}
	printf("%d", ans);
	return 0;
}

2023/9/14 18:26
加载中...