This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "mars.h"
#include <bits/stdc++.h>
#define X first
#define Y second
using namespace std;
vector<pair<int, int> > adj[20][20];
bool vis[20][20];
int id(int i, int j, int n) {
return i*n+j;
}
bool valid(int i, int j, int n) {
if (i < 0) return false;
if (i >= n) return false;
if (j < 0) return false;
if (j >= n) return false;
return true;
}
void dfs(int x, int y) {
vis[x][y] = true;
for (auto p : adj[x][y]) {
if (!vis[p.X][p.Y]) dfs(p.X, p.Y);
}
}
string process(vector<vector<string> > a, int i, int j, int k, int n) {
string ans(100, '0');
int tn = n;
n = 2*n+1;
if (k == 0) {
for (int dx=0; dx < 3; ++dx) for (int dy=0; dy < 3; ++dy) if (a[dx][dy][0] == '1') ans[id(i+dx, j+dy, n)] = '1';
}
else {
for (int dx=0; dx < 3; ++dx) for (int dy=0; dy < 3; ++dy) for (int jk=0; jk < 100; ++jk) if (a[dx][dy][jk] == '1') ans[jk] = '1';
}
if (k == tn-1) {
char mat[n][n];
for (int dx=0; dx < n; ++dx) for (int dy=0; dy < n; ++dy) vis[dx][dy] = false;
for (int dx=0; dx < n; ++dx) for (int dy=0; dy < n; ++dy) mat[dx][dy] = ans[id(dx, dy, n)];
int cc = 0;
for (int dx=0; dx < n; ++dx) {
for (int dy=0; dy < n; ++dy) {
if (mat[dx][dy] == '1') {
if (valid(dx-1, dy, n) && mat[dx-1][dy] == '1') {
adj[dx][dy].push_back(make_pair(dx-1, dy));
adj[dx-1][dy].push_back(make_pair(dx, dy));
}
if (valid(dx+1, dy, n) && mat[dx+1][dy] == '1') {
adj[dx][dy].push_back(make_pair(dx+1, dy));
adj[dx+1][dy].push_back(make_pair(dx, dy));
}
if (valid(dx, dy-1, n) && mat[dx][dy-1] == '1') {
adj[dx][dy].push_back(make_pair(dx, dy-1));
adj[dx][dy-1].push_back(make_pair(dx, dy));
}
if (valid(dx, dy+1, n) && mat[dx][dy+1] == '1') {
adj[dx][dy].push_back(make_pair(dx, dy+1));
adj[dx][dy+1].push_back(make_pair(dx, dy));
}
}
}
}
for (int dx=0; dx < n; ++dx) {
for (int dy=0; dy < n; ++dy) {
if (mat[dx][dy] == '1' && !vis[dx][dy]) {
++cc;
dfs(dx, dy);
}
}
}
string conn(100, '0');
for (i=0; i < 9; ++i) if (cc & (1 << i)) conn[i] = '1';
return conn;
}
else return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |