72分求助
  • 板块P9228 原神
  • 楼主wanttoac
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/3 12:32
  • 上次更新2024/4/3 16:58:37
查看原帖
72分求助
1258100
wanttoac楼主2024/4/3 12:32

我的思路:在冰火攻击充足的情况下,需要两者交替攻击,选择最大的顺序

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n, m,k,damage=0;
int fire[1000007];
int ice[1000007];
signed main() {
	cin >> n >>m>> k;
	for (int i = 0; i < n; i++)cin >> fire[i];
	for (int i = 0; i < m; i++)cin >> ice[i];
	sort(fire, fire + n);
	sort(ice, ice + m);
	int l = n - 1, r = m - 1;
	while (l>=0&&r>=0) {
		damage += max(k+fire[l]+ice[r], 2*fire[l]+ice[r]);
		l--;
		r--;
	}
	for (int i = l; i >= 0; i--)damage += fire[i];
	for (int i = r; i >= 0; i--)damage += ice[r];
	cout << damage;
}
2024/4/3 12:32
加载中...