voidread() { cin >> m >> n; for (int i = 1; i <= m * n; ++i) { cin >> project_list[i]; } for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cin >> project_table[i][j].first; } } for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cin >> project_table[i][j].second; } } }
intmain() { ios::sync_with_stdio(false); read(); int ans = 0, cost = 0, project_id, machine_id, machine_cost; for (int i = 1; i <= m * n; ++i) { project_id = project_list[i], ++project_record[project_id]; machine_id = project_table[project_id][project_record[project_id]].first; machine_cost = project_table[project_id][project_record[project_id]].second; cost = 0; for (int j = project_timeline[project_id] + 1;; ++j) { if (!machine_timeline[machine_id][j]) { ++cost; } else { cost = 0; } if (cost == machine_cost) { for (int k = j; k > j - machine_cost; --k) { machine_timeline[machine_id][k] = true; } ans = max(ans, j); project_timeline[project_id] = j; break; } } } cout << ans; return0; }