# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
99487 | mzhao | Dango Maker (JOI18_dango_maker) | C++11 | 2060 ms | 240260 KiB |
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 <bits/stdc++.h>
using namespace std;
int R, C, G[3100][3100], ans;
bool f[3100][3100][2]; // 0 is horizontal, 1 is vertical
int id[3100][3100][2];
int nn;
vector<int> adj[9100100];
void dfs(int p, int x, int y, int z) {
if (id[x][y][z]) {
adj[p].push_back(id[x][y][z]);
return;
}
int me = ++nn;
id[x][y][z] = me;
adj[p].push_back(id[x][y][z]);
if (z) {
if (f[x][y][0]) dfs(me, x, y, 0);
if (y > 0 && f[x+1][y-1][0]) dfs(me, x+1, y-1, 0);
if (y > 1 && f[x+2][y-2][0]) dfs(me, x+2, y-2, 0);
} else {
if (f[x][y][1]) dfs(me, x, y, 1);
if (x > 0 && f[x-1][y+1][1]) dfs(me, x-1, y+1, 1);
if (x > 1 && f[x-2][y+2][1]) dfs(me, x-2, y+2, 1);
}
}
int dp[9999][4]; // left is first bit right is second bit
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |