求解
查看原帖
求解
1161928
wrup_AC_28楼主2023/12/6 22:10

Subtask过了,但其他全WA,求``` #include #include #include

using namespace std;

struct Operation { int job; int machine; int time; };

bool compareTime(const Operation& op1, const Operation& op2) { return op1.time < op2.time; }

int main() { int m, n; cin >> m >> n;

vector<int> order(m * n);
for (int i = 0; i < m * n; i++) {
    cin >> order[i];
}

vector<vector<int>> machines(n, vector<int>(m));
vector<vector<int>> times(n, vector<int>(m));

for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
        cin >> machines[i][j];
    }
}

for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
        cin >> times[i][j];
    }
}

vector<Operation> operations;

for (int i = 0; i < m * n; i++) {
    int job = order[i];
    int machine = machines[job - 1][0];
    int time = times[job - 1][0];
    
    operations.push_back({job, machine, time});
    
    machines[job - 1].erase(machines[job - 1].begin());
    times[job - 1].erase(times[job - 1].begin());
}

sort(operations.begin(), operations.end(), compareTime);

vector<int> completionTimes(m, 0);
int totalTime = 0;

for (const Operation& op : operations) {
    int job = op.job;
    int machine = op.machine;
    int time = op.time;
    
    completionTimes[machine - 1] += time;
    totalTime = max(totalTime, completionTimes[machine - 1]);
}

cout << totalTime << endl;

return 0;

}

2023/12/6 22:10
加载中...