RT。
#include <bits/stdc++.h>
using namespace std;
int n, X, Y, ans;
struct node {
int x, y, id;
} a[1005];
bool cmp(node a, node b) {
return min(a.x, b.y) != min(a.y, b.x) ? min(a.x, b.y) < min(a.y, b.x) : (a.y < b.y);
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i].x, a[i].id = i;
for (int i = 1; i <= n; i++) cin >> a[i].y;
stable_sort(a + 1, a + 1 + n, cmp);
for (int i = 1; i <= n; i++) {
X += a[i].x; Y = max(X, Y) + a[i].y;
}
cout << Y << endl;
for (int i = 1; i <= n; i++)
cout << a[i].id << (i == n ? "" : " ");
return 0;
}
有什么严格证明吗?/yiw