Submission #1253333

#TimeUsernameProblemLanguageResultExecution timeMemory
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...