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...