我的思路:在冰火攻击充足的情况下,需要两者交替攻击,选择最大的顺序
#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;
}