제출 #1249488

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

vector<vector<int>> create_map(int N, int M, vector<int> A, vector<int> B) {
    int K = 2 * N; // Safe size
    vector<vector<int>> grid(K, vector<int>(K, 0));
    
    // Step 1: Assign 2x2 blocks for each country
    int x = 0, y = 0;
    for (int c = 1; c <= N; c++) {
        for (int i = 0; i < 2; i++)
            for (int j = 0; j < 2; j++)
                grid[x + i][y + j] = c;
        
        x += 3; // leave 1 row gap
        if (x + 2 > K) { x = 0; y += 3; } // next column block
    }
    
    // Step 2: Add adjacencies
    // For each pair (A,B), just find a border cell to connect
    for (int i = 0; i < M; i++) {
        int a = A[i], b = B[i];
        bool placed = false;
        for (int r = 0; r < K && !placed; r++) {
            for (int c = 0; c < K && !placed; c++) {
                if (grid[r][c] == a) {
                    // Try right
                    if (c+1 < K && grid[r][c+1] == 0) {
                        grid[r][c+1] = b;
                        placed = true;
                    }
                    // Try down
                    else if (r+1 < K && grid[r+1][c] == 0) {
                        grid[r+1][c] = b;
                        placed = 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...