0分求助 6 5 5 3 3正确的(排序加二分)
查看原帖
0分求助 6 5 5 3 3正确的(排序加二分)
669016
lukaKroos楼主2023/1/27 21:07
#include <iostream>
#include <algorithm>
using namespace std;
int cnt[4];
int a[4][20];
int ans;
int main() {
	ans = 0;
	for (int i = 0; i < 4; i++) scanf("%d", &cnt[i]);
	for (int i = 0; i < 4; i++) {
		for (int j = 0; j < cnt[i]; j++) scanf("%d", &a[i][j]);
	}
	
	for (int i = 0; i < 4; i++) {
		sort(a[i], a[i] + cnt[i]);
	} 
	
	int n1 = 0;
	int n2 = 0;
	for (int i = 0; i < 4; i++) {
		int left = 0;
		int right = cnt[i] - 1;
		n1 = a[i][left++];
		n2 = a[i][right--];
		while (left <= right) {
			n1 += a[i][left++];
			if (n1 > n2 && left <= right) n2 += a[i][right--];	
		}
		ans += max(n1, n2);
		//printf("%d %d %d\n",n1, n2, ans);
	}
	printf("%d", ans);
	return 0;
} 
2023/1/27 21:07
加载中...