Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
134805 | mairuisheng | 加工生产调度 | C++ | 解答错误 | 33 | 0 MS | 276 KB | 1024 | 2024-03-02 19:33:31 |
#include <bits/stdc++.h> using namespace std; int n, ta, tb, l, r, a0[1005], b0[1005], ord[1005]; struct node { int a, b, id; }p[1005]; int read() { int x = 0, fl = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') fl = -1; ch = getchar();} while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + ch - '0'; ch = getchar();} return x * fl; } int cmp(node x, node y) { return min(x.a, x.b) < min(y.a, y.b); } int main() { n = read(); for (int i = 1; i <= n; i ++ ) p[i].a = read(), a0[i] = p[i].a; for (int i = 1; i <= n; i ++ ) p[i].b = read(), b0[i] = p[i].b; for (int i = 1; i <= n; i ++ ) p[i].id = i; sort(p + 1, p + n + 1, cmp); l = 0; r = n + 1; for (int i = 1; i <= n; i ++ ) (p[i].a < p[i].b) ? ord[ ++ l] = p[i].id : ord[ -- r] = p[i].id; for (int i = 1; i <= n; i ++ ) { ta += a0[ord[i]]; tb = max(ta, tb) + b0[ord[i]]; } printf("%d\n", tb); for (int i = 1; i <= n; i ++ ) printf("%d ", ord[i]); puts(""); return 0; }