제출 #1225179

#제출 시각아이디문제언어결과실행 시간메모리
1225179SpyrosAlivMars (APIO22_mars)C++20
0 / 100
0 ms2856 KiB
#include <bits/stdc++.h> using namespace std; vector<pair<int, int>> delta = {{-1, 0}, {1, 0}, {0, 1}, {0, -1}}; vector<vector<bool>> vis; int N; bool inside(int i, int j) { return i >= 0 && i < N && j >= 0 && j < N; } void dfs(int i, int j, vector<vector<char>> &grid) { if (!inside(i, j) || vis[i][j] || grid[i][j] == '0') return; vis[i][j] = true; for (auto [pi, pj]: delta) dfs(i + pi, j + pj, grid); } int get_comps(vector<vector<char>> grid) { N = grid.size(); vis.assign(N, vector<bool>(N, false)); int ans = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (vis[i][j] || grid[i][j] == '0') continue; ans++; dfs(i, j, grid); } } return ans; } string process(vector<vector<string>> a, int i, int j, int k, int n) { int m = 2 * (n - k - 1); if (i != m && j != m) return a[0][0]; if (i == m && j != m) { // construct column string fin = ""; fin += a[0][0][0]; fin += a[1][0][0]; fin += a[2][1]; while (fin.size() > 100) fin.pop_back(); return fin; } else if (j == m && i != m) { // construct row; string fin = ""; fin += a[0][0][0]; fin += a[0][1][0]; fin += a[0][2]; while (fin.size() > 100) fin.pop_back(); return fin; } else if (i == m && j == m) { // construct the grid int sz = (2*n+1) - i; vector<vector<char>> grid(sz, vector<char>(sz)); for (int r = 0; r < 2; r++) { for (int c = 0; c < 2; c++) { grid[r][c] = a[r][c][0]; } } for (int r = 3; r < sz; r++) { grid[0][r] = a[2][0][r - 3]; grid[1][r] = a[2][1][r - 3]; } for (int c = 3; c < sz; c++) { grid[c][0] = a[0][2][c-3]; grid[c][1] = a[1][2][c-3]; } int sz2 = (2*n+1) - i - 2; vector<vector<char>> otherGrid(sz2, vector<char>(sz2)); for (int r = 0; r < sz2; r++) { for (int c = 0; c < sz2; c++) { otherGrid[r][c] = a[2][2][sz2 * r + c]; } } for (int r = 3; r < sz; r++) { for (int c = 3; c < sz; c++) { grid[r][c] = otherGrid[r - 3][c - 3]; } } if (k == n-1) { int x = get_comps(grid); string ans = ""; for (int b = 0; b < 100; b++) { if ((x >> b) & 1) ans += '1'; else ans += '0'; } return ans; } else { string ret = ""; for (int r = 0; r < sz; r++) { for (int c = 0; c < sz; c++) { ret += grid[r][c]; } } while (ret.size() < 100) ret += '0'; return ret; } } }

컴파일 시 표준 에러 (stderr) 메시지

mars.cpp: In function 'std::string process(std::vector<std::vector<std::__cxx11::basic_string<char> > >, int, int, int, int)':
mars.cpp:101:1: warning: control reaches end of non-void function [-Wreturn-type]
  101 | }
      | ^
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...