Submission #1253340

#TimeUsernameProblemLanguageResultExecution timeMemory
1253340vuviet세계 지도 (IOI25_worldmap)C++20
0 / 100
1 ms328 KiB
#include <bits/stdc++.h> using namespace std; typedef vector<int> vi; vector<vi> create_map(int n, int m, vi a, vi b) { const int K = 2 * n; // kích thước lưới (an toàn với n <= 15) vector<vi> grid(K, vi(K, 0)); vector<pair<int, int>> pos(n + 1, {-1, -1}); int r = 0, c = 0; // Bước 1: đặt mỗi quốc gia vào 1 ô riêng biệt for (int i = 1; i <= n; i++) { grid[r][c] = i; pos[i] = {r, c}; c++; if (c == K) c = 0, r++; } // Bước 2: tạo tiếp giáp cho các cặp liên kết int dr[] = {-1, 1, 0, 0}; int dc[] = {0, 0, -1, 1}; for (int i = 0; i < m; i++) { int u = a[i], v = b[i]; bool found = false; // tìm ô đã có màu u for (int x = 0; x < K && !found; x++) { for (int y = 0; y < K && !found; y++) { if (grid[x][y] != u) continue; // tìm ô trống xung quanh để đặt v for (int d = 0; d < 4; d++) { int nx = x + dr[d], ny = y + dc[d]; if (nx >= 0 && nx < K && ny >= 0 && ny < K) { if (grid[nx][ny] == 0) { grid[nx][ny] = v; found = true; break; } else if (grid[nx][ny] == v) { found = true; break; } } } } } // nếu chưa đặt được, gán đại v vào ô trống if (!found) { for (int x = 0; x < K && !found; x++) { for (int y = 0; y < K && !found; y++) { if (grid[x][y] == 0) { grid[x][y] = v; found = 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...