提交时间:2024-03-02 11:46:43
运行 ID: 134053
#include <bits/stdc++.h> #define int long long using namespace std; const int N = 10000 + 5; int n, m, a[N], b[N], wk[N], wa, wb; struct st{ int m, i; bool operator<(const st&a) { return m < a.m; } } stu[N]; signed main() { scanf("%d", &n); for (int i=1; i<=n; i++) scanf("%d", a+i), stu[i].i=i; for (int i=1; i<=n; i++) scanf("%d", b+i), stu[i].m=min(a[i], b[i]); sort(stu+1, stu+1+n); int l=1, r=n; for (int i=1; i<=n; i++) { if (stu[i].m == a[stu[i].i]) wk[l++] = stu[i].i; else wk[r--] = stu[i].i; } for (int i=1; i<=n; i++) { wa += a[wk[i]]; if (wa > wb) wb = wa; wb += b[wk[i]]; } printf("%d\n", wb); for (int i=1; i<=n; i++) printf("%d ", wk[i]); return 0; }