| Task: | Island |
| Sender: | Valters07 |
| Submission time: | 2026-04-16 13:56:38 +0300 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | 16 |
| subtask | verdict | score |
|---|---|---|
| #1 | RUNTIME ERROR | 0 |
| #2 | RUNTIME ERROR | 0 |
| #3 | ACCEPTED | 16 |
| #4 | RUNTIME ERROR | 0 |
| #5 | RUNTIME ERROR | 0 |
| test | verdict | time | subtask | |
|---|---|---|---|---|
| #1 | RUNTIME ERROR | 1.12 s | 1, 5 | details |
| #2 | ACCEPTED | 0.02 s | 1, 2, 3, 4, 5 | details |
| #3 | RUNTIME ERROR | 0.90 s | 1, 5 | details |
| #4 | RUNTIME ERROR | 0.90 s | 1, 5 | details |
| #5 | ACCEPTED | 0.03 s | 1, 3, 5 | details |
| #6 | RUNTIME ERROR | 0.94 s | 1, 2, 4, 5 | details |
| #7 | RUNTIME ERROR | 0.94 s | 1, 2, 4, 5 | details |
| #8 | RUNTIME ERROR | 1.12 s | 1, 5 | details |
| #9 | RUNTIME ERROR | 1.12 s | 1, 5 | details |
| #10 | ACCEPTED | 0.04 s | 1, 3, 4, 5 | details |
| #11 | ACCEPTED | 0.04 s | 1, 3, 5 | details |
| #12 | RUNTIME ERROR | 0.94 s | 1, 4, 5 | details |
| #13 | ACCEPTED | 0.04 s | 1, 3, 4, 5 | details |
| #14 | RUNTIME ERROR | 1.03 s | 1, 4, 5 | details |
| #15 | RUNTIME ERROR | 0.94 s | 1, 5 | details |
| #16 | RUNTIME ERROR | 1.03 s | 1, 5 | details |
| #17 | RUNTIME ERROR | 1.29 s | 1, 5 | details |
| #18 | RUNTIME ERROR | 1.01 s | 1, 5 | details |
| #19 | RUNTIME ERROR | 1.05 s | 2, 4, 5 | details |
| #20 | RUNTIME ERROR | 1.04 s | 2, 4, 5 | details |
| #21 | RUNTIME ERROR | 1.04 s | 2, 4, 5 | details |
| #22 | RUNTIME ERROR | 1.13 s | 2, 4, 5 | details |
| #23 | ACCEPTED | 0.41 s | 3, 5 | details |
| #24 | ACCEPTED | 0.39 s | 3, 5 | details |
| #25 | ACCEPTED | 0.40 s | 3, 5 | details |
| #26 | ACCEPTED | 0.56 s | 3, 5 | details |
| #27 | ACCEPTED | 0.64 s | 3, 4, 5 | details |
| #28 | ACCEPTED | 0.63 s | 3, 4, 5 | details |
| #29 | TIME LIMIT EXCEEDED | -- | 4, 5 | details |
| #30 | RUNTIME ERROR | 1.16 s | 4, 5 | details |
| #31 | RUNTIME ERROR | 0.95 s | 4, 5 | details |
| #32 | TIME LIMIT EXCEEDED | -- | 4, 5 | details |
| #33 | RUNTIME ERROR | 1.13 s | 4, 5 | details |
| #34 | RUNTIME ERROR | 1.06 s | 4, 5 | details |
| #35 | RUNTIME ERROR | 1.19 s | 5 | details |
| #36 | RUNTIME ERROR | 1.18 s | 5 | details |
| #37 | RUNTIME ERROR | 0.98 s | 5 | details |
| #38 | RUNTIME ERROR | 1.18 s | 5 | details |
| #39 | RUNTIME ERROR | 0.99 s | 5 | details |
| #40 | RUNTIME ERROR | 1.17 s | 5 | details |
| #41 | RUNTIME ERROR | 1.06 s | 5 | details |
| #42 | RUNTIME ERROR | 1.11 s | 5 | details |
| #43 | RUNTIME ERROR | 0.97 s | 5 | details |
| #44 | RUNTIME ERROR | 1.14 s | 5 | details |
Code
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#define fio ios_base::sync_with_stdio(0);cin.tie(0);
#define ll long long
#define ld long double
#define en exit(0);
#define pb push_back
#define fi first
#define se second
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int N = 1005;
const int M = 1e6 + 5;
const int LOG = log2(M) + 2;
const int dx[] = {1, -1, 0, 0};
const int dy[] = {0, 0, 1, -1};
char gr[N][N];
vector<int> g[M];
int par[M][LOG], tin[M], tout[M], tt;
int dist[M], n;
int toind(int x, int y)
{
return (y - 1) * n + x;
}
void dfs(int u, int p)
{
tin[u] = ++tt;
par[u][0] = p;
for(int i = 1;i < LOG;i++)
par[u][i] = par[par[u][i - 1]][i - 1];
for(auto v : g[u])
{
if(v != p)
{
dist[v] = dist[u] + 1;
dfs(v, u);
}
}
tout[u] = tt;
}
bool is_anc(int u, int v)
{
return (tin[u] <= tin[v] && tout[v] <= tout[u]);
}
int get_lca(int u, int v)
{
if(is_anc(u, v)) return u;
if(is_anc(v, u)) return v;
for(int i = LOG - 1;i >= 0;i--)
if(!is_anc(par[u][i], v))
u = par[u][i];
return par[u][0];
}
int get_dist(int u, int v)
{
int lca = get_lca(u, v);
return dist[u] + dist[v] - 2 * dist[lca];
}
int main()
{
fio
// ifstream cin("in.in");
int q;
cin >> n >> q;
int r = -1;
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= n;j++)
{
cin >> gr[i][j];
if(gr[i][j] == '#')
{
for(int d = 0;d < 4;d++)
{
int nwx = i + dx[d], nwy = j + dy[d];
if(!(1 <= nwx && nwx <= n && 1 <= nwy && nwy <= n))
continue;
if(gr[nwx][nwy] == '.')
continue;
g[toind(i, j)].pb(toind(nwx, nwy));
}
r = toind(i, j);
}
}
}
dfs(r, r);
while(q--)
{
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
int u = toind(x1, y1), v = toind(x2, y2);
cout << get_dist(u, v) << "\n";
}
return 0;
}
Test details
Test 1
Subtask: 1, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 8 4 ........ ..####.. .##.###. .##.###. ... |
| correct output |
|---|
| 5 0 17 3 |
| user output |
|---|
| (empty) |
Test 2
Subtask: 1, 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 3 1 ... .#. ... 2 2 2 2 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 3
Subtask: 1, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 199 196 ................................. |
| correct output |
|---|
| 468 605 825 532 496 ... |
| user output |
|---|
| (empty) |
Test 4
Subtask: 1, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 112 347 142 459 239 ... |
| user output |
|---|
| (empty) |
Test 5
Subtask: 1, 3, 5
Verdict: ACCEPTED
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 381 544 94 532 98 ... |
| user output |
|---|
| 381 544 94 532 98 ... |
Test 6
Subtask: 1, 2, 4, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 133 73 81 82 53 ... |
| user output |
|---|
| (empty) |
Test 7
Subtask: 1, 2, 4, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 139 52 101 14 144 ... |
| user output |
|---|
| (empty) |
Test 8
Subtask: 1, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 236 555 878 632 829 ... |
| user output |
|---|
| (empty) |
Test 9
Subtask: 1, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 425 296 698 577 422 ... |
| user output |
|---|
| (empty) |
Test 10
Subtask: 1, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 1365 7284 11808 6136 9283 ... |
| user output |
|---|
| 1365 7284 11808 6136 9283 ... |
Test 11
Subtask: 1, 3, 5
Verdict: ACCEPTED
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 6292 17954 16728 8938 1335 ... |
| user output |
|---|
| 6292 17954 16728 8938 1335 ... |
Test 12
Subtask: 1, 4, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 27 141 269 127 61 ... |
| user output |
|---|
| (empty) |
Test 13
Subtask: 1, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 19552 19544 19478 19402 19456 ... |
| user output |
|---|
| 19552 19544 19478 19402 19456 ... |
Test 14
Subtask: 1, 4, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 17624 17515 17468 17689 17510 ... |
| user output |
|---|
| (empty) |
Test 15
Subtask: 1, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 1584 1433 567 2248 1030 ... |
| user output |
|---|
| (empty) |
Test 16
Subtask: 1, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 5872 6374 60 323 5311 ... |
| user output |
|---|
| (empty) |
Test 17
Subtask: 1, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 1852 213 252 3861 1835 ... |
| user output |
|---|
| (empty) |
Test 18
Subtask: 1, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 200 200 ................................. |
| correct output |
|---|
| 1564 2709 866 1318 1758 ... |
| user output |
|---|
| (empty) |
Test 19
Subtask: 2, 4, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 997 100000 ................................. |
| correct output |
|---|
| 150 531 370 518 508 ... |
| user output |
|---|
| (empty) |
Test 20
Subtask: 2, 4, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 390 278 783 1269 249 ... |
| user output |
|---|
| (empty) |
Test 21
Subtask: 2, 4, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 63 142 813 683 731 ... |
| user output |
|---|
| (empty) |
Test 22
Subtask: 2, 4, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 949 876 1209 494 1033 ... |
| user output |
|---|
| (empty) |
Test 23
Subtask: 3, 5
Verdict: ACCEPTED
| input |
|---|
| 997 100000 ................................. |
| correct output |
|---|
| 714 2683 3699 2085 7850 ... |
| user output |
|---|
| 714 2683 3699 2085 7850 ... |
Test 24
Subtask: 3, 5
Verdict: ACCEPTED
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 5081 1819 1050 4610 528 ... |
| user output |
|---|
| 5081 1819 1050 4610 528 ... |
Test 25
Subtask: 3, 5
Verdict: ACCEPTED
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 3554 6322 6648 2882 1490 ... |
| user output |
|---|
| 3554 6322 6648 2882 1490 ... |
Test 26
Subtask: 3, 5
Verdict: ACCEPTED
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 433976 81646 87810 48080 110879 ... |
| user output |
|---|
| 433976 81646 87810 48080 110879 ... |
Test 27
Subtask: 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 207982 140036 208364 51912 56826 ... |
| user output |
|---|
| 207982 140036 208364 51912 56826 ... |
Test 28
Subtask: 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 497525 497563 498000 496804 497335 ... |
| user output |
|---|
| 497525 497563 498000 496804 497335 ... |
Test 29
Subtask: 4, 5
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 38580 2097 9795 38033 1639 ... |
| user output |
|---|
| (empty) |
Test 30
Subtask: 4, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 33 20900 25028 1782 13599 ... |
| user output |
|---|
| (empty) |
Test 31
Subtask: 4, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 1421 1122 1840 834 443 ... |
| user output |
|---|
| (empty) |
Test 32
Subtask: 4, 5
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 1378 1751 2274 250 811 ... |
| user output |
|---|
| (empty) |
Test 33
Subtask: 4, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 1126 886 544 223 272 ... |
| user output |
|---|
| (empty) |
Test 34
Subtask: 4, 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 327286 447779 447534 448307 446997 ... |
| user output |
|---|
| (empty) |
Test 35
Subtask: 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 2597 1473 1933 2691 1837 ... |
| user output |
|---|
| (empty) |
Test 36
Subtask: 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 553 4357 3147 6951 1573 ... |
| user output |
|---|
| (empty) |
Test 37
Subtask: 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 1723 2039 1871 5638 4256 ... |
| user output |
|---|
| (empty) |
Test 38
Subtask: 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 1546 704 2796 3802 1870 ... |
| user output |
|---|
| (empty) |
Test 39
Subtask: 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 3115 2042 2083 3227 740 ... |
| user output |
|---|
| (empty) |
Test 40
Subtask: 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 5222 3211 5230 1772 2310 ... |
| user output |
|---|
| (empty) |
Test 41
Subtask: 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 159214 68851 200821 141404 145704 ... |
| user output |
|---|
| (empty) |
Test 42
Subtask: 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 1843 25028 124430 84542 131339 ... |
| user output |
|---|
| (empty) |
Test 43
Subtask: 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 111206 75799 12026 142133 20483 ... |
| user output |
|---|
| (empty) |
Test 44
Subtask: 5
Verdict: RUNTIME ERROR
| input |
|---|
| 1000 100000 ................................. |
| correct output |
|---|
| 20360 9075 12187 54923 54574 ... |
| user output |
|---|
| (empty) |
