Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
134070 | 凌艺樽 | 加工生产调度 | C++ | 解答错误 | 0 | 0 MS | 284 KB | 1427 | 2024-03-02 13:26:33 |
#include <bits/stdc++.h> using namespace std; class NumType { public: int value; int id; public: NumType(){ } NumType(int v, int i):value(v), id(i){ } public: void SetValue(int v, int i) { value = v, id = i; } public: }; int n, n_a, n_b; int p[1024], a_v[1024], b_v[1024]; NumType A[1024]; NumType B[1024]; void Input() { int a, b; n_a = n_b = 0; scanf("%d", &n); for(int i = 1; i <= n; ++i) { scanf("%d %d", &a, &b); a_v[i] = a, b_v[i] = b; if(a < b) { A[n_a++].SetValue(a, i); } else B[n_b++].SetValue(b, i); } } bool compare_a(const NumType &a, const NumType &b) { return a.value < b.value; } void FlowShop() { memset(p, 0, sizeof(p)); sort(A, A + n_a, compare_a); sort(B, B + n_b, compare_a); for(int i = 0; i < n_a; ++i) p[i + 1] = A[i].id; for(int i = 0; i < n_b; ++i) p[n - i] = B[i].id; } void OutPut() { int time_a = a_v[p[1]]; int time_b = time_a + b_v[p[1]]; for(int i = 2; i <= n; ++i) { time_a += a_v[p[i]]; time_b = time_a < time_b ? time_b + b_v[p[i]] : time_a + b_v[p[i]]; } cout<<time_b<<endl; for(int i = 1; i <= n; ++i) { cout << p[i] << " "; } } int main() { Input(); FlowShop(); OutPut(); }