牛客寒假集训营1:小朋友玩游戏
#include <bits/stdc++.h> //c++万能头文件
using namespace std;
#define rep(i,a,n) for(int i=a;i<=n;i++) //函数简写
/*bool cmp(int xx,int yy){
return xx>yy;
}*/ //cmp可替代greater<int>()
int va[10010], vb[10010];
int suma[10010], sumb[10010];
int T, A, B, n;
int main() {
cin >> T; //scanf("%d",&T);
while (T--) {
cin >> A >> B >> n;
rep(i, 1, A) cin >> va[i];
rep(i, 1, B) cin >> vb[i];
int maxb = min(B / 2, n);
if (maxb + A < n) {
puts("-1");
continue;
}
sort(va + 1, va + A + 1, greater<int>()); //排好序 下面遍历各种前端和的情况求最大幸福度
sort(vb + 1, vb + B + 1, greater<int>());
rep(i, 1, A) suma[i] = suma[i - 1] + va[i]; //一维数组前端和
rep(i, 1, B) sumb[i] = sumb[i - 1] + vb[i];
int ans = -1; //不熟了开始
rep(ia, 0, A) {
int ib = n - ia;
if (ib > maxb || ib < 0)
continue;
else
ans = max(ans, suma[ia] + sumb[ib]);
}
cout << ans << endl;
}
}