제출 #1253333

#제출 시각아이디문제언어결과실행 시간메모리
1253333vuvietWorld Map (IOI25_worldmap)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h>
using namespace std;

int K = 15;

vector<vector<int>> create_map(int N, int M, vector<int> A, vector<int> B) {
    vector<vector<int>> grid(K, vector<int>(K, 0));
    vector<pair<int, int>> pos(N + 1, {-1, -1}); // vị trí mỗi quốc gia

    int x = 0, y = 0;

    // Bước 1: Gán mỗi quốc gia vào lưới (khác nhau)
    for (int i = 1; i <= N; i++) {
        grid[x][y] = i;
        pos[i] = {x, y};
        y++;
        if (y == K) {
            y = 0;
            x++;
        }
    }

    // Bước 2: Đặt các cặp liền kề
    for (int i = 0; i < M; i++) {
        int u = A[i], v = B[i];
        bool ok = false;

        // Duyệt lưới để tìm ô của u và ô trống bên cạnh để đặt v
        for (int r = 0; r < K && !ok; r++) {
            for (int c = 0; c < K && !ok; c++) {
                if (grid[r][c] != u) continue;
                // 4 hướng
                int dr[] = {-1, 1, 0, 0};
                int dc[] = {0, 0, -1, 1};
                for (int d = 0; d < 4; d++) {
                    int nr = r + dr[d];
                    int nc = c + dc[d];
                    if (nr >= 0 && nr < K && nc >= 0 && nc < K) {
                        if (grid[nr][nc] == 0) {
                            grid[nr][nc] = v;
                            ok = true;
                            break;
                        }
                        if (grid[nr][nc] == v) {
                            ok = true;
                            break;
                        }
                    }
                }
            }
        }

        // Nếu không tìm được vị trí cạnh nhau, đặt v vào đâu đó rồi nối sau
        if (!ok) {
            for (int r = 0; r < K && !ok; r++) {
                for (int c = 0; c < K && !ok; c++) {
                    if (grid[r][c] == 0) {
                        grid[r][c] = v;
                        ok = 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...