Submission #1253177

#TimeUsernameProblemLanguageResultExecution timeMemory
1253177dreamnguyenWorld Map (IOI25_worldmap)C++20
0 / 100
0 ms328 KiB
#include <vector> #include <unordered_set> std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A, std::vector<int> B) { int K = 2 * N; std::vector<std::vector<int>> grid(K, std::vector<int>(K, 0)); std::vector<std::vector<bool>> used(K, std::vector<bool>(K, false)); std::unordered_set<int> appeared; int r = 0, c = 0; auto place_pair = [&](int a, int b) { while (r < K) { if (c + 1 < K && !used[r][c] && !used[r][c + 1]) { grid[r][c] = a; grid[r][c + 1] = b; used[r][c] = used[r][c + 1] = true; appeared.insert(a); appeared.insert(b); c += 2; if (c >= K) { c = 0; ++r; } return; } else { ++c; if (c >= K) { c = 0; ++r; } } } }; // Đặt mỗi cạnh (A[i], B[i]) vào lưới for (int i = 0; i < M; ++i) { place_pair(A[i], B[i]); } // Đảm bảo mỗi màu xuất hiện ít nhất 1 lần for (int color = 1; color <= N; ++color) { if (appeared.count(color)) continue; // Tìm 1 ô trống bất kỳ bool done = false; for (int i = 0; i < K && !done; ++i) { for (int j = 0; j < K && !done; ++j) { if (!used[i][j]) { grid[i][j] = color; used[i][j] = true; done = true; } } } } return grid; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...