Submission #23136535


Source Code Expand

import numpy as np
import numba
try:
    from numba.experimental import jitclass
except ImportError:
    from numba import jitclass


@jitclass([("parent_or_size", numba.int32[:]), ])
class union_find:
    def __init__(self, n):
        self.parent_or_size = np.full(n, -1, dtype=np.int32)

    def find(self, x):
        p = x
        while self.parent_or_size[p] >= 0:
            p = self.parent_or_size[p]
        while self.parent_or_size[x] >= 0:
            tmp = self.parent_or_size[x]
            self.parent_or_size[x] = p
            x = tmp
        return p

    def same(self, x, y):
        return self.find(x) == self.find(y)

    def size(self, x):
        return -self.parent_or_size[self.find(x)]

    def union(self, x, y):
        x = self.find(x)
        y = self.find(y)
        if x == y:
            return False
        if self.size(x) < self.size(y):
            x, y = y, x
        self.parent_or_size[x] += self.parent_or_size[y]
        self.parent_or_size[y] = x
        return True


@numba.njit('void(int32[:])', cache=True)
def main(inp):
    h, w, q = inp[:3]
    uf = union_find(h * w)
    painted = np.zeros((h, w), dtype=np.bool8)
    adj = ((0, 1), (1, 0), (0, -1), (-1, 0))
    idx = 3
    for _ in range(q):
        t = inp[idx]
        idx += 1
        if t == 1:
            i, j = inp[idx: idx + 2] - 1
            idx += 2
            painted[i, j] = True
            for di, dj in adj:
                ti = i + di
                tj = j + dj
                if 0 <= ti < h and 0 <= tj < w and painted[ti, tj]:
                    uf.union(i * w + j, ti * w + tj)
        else:
            i1, j1, i2, j2 = inp[idx: idx + 4] - 1
            idx += 4
            print("Yes" if painted[i1, j1]
                  and uf.same(i1 * w + j1, i2 * w + j2) else "No")


if __name__ == "__main__":
    main(np.fromstring(open(0).read(), dtype=np.int32, sep=' '))

Submission Info

Submission Time
Task 012 - Red Painting(★4)
User riantkb
Language Python (3.8.2)
Score 4
Code Size 1898 Byte
Status AC
Exec Time 559 ms
Memory 128092 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 4 / 4
Status
AC × 3
AC × 43
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt
Case Name Status Exec Time Memory
sample_01.txt AC 513 ms 106004 KiB
sample_02.txt AC 490 ms 106824 KiB
sample_03.txt AC 477 ms 106088 KiB
subtask_1_01.txt AC 544 ms 110904 KiB
subtask_1_02.txt AC 500 ms 110928 KiB
subtask_1_03.txt AC 522 ms 111988 KiB
subtask_1_04.txt AC 531 ms 118824 KiB
subtask_1_05.txt AC 520 ms 109496 KiB
subtask_1_06.txt AC 506 ms 107552 KiB
subtask_1_07.txt AC 525 ms 108328 KiB
subtask_1_08.txt AC 533 ms 113476 KiB
subtask_1_09.txt AC 509 ms 109300 KiB
subtask_1_10.txt AC 523 ms 108192 KiB
subtask_1_11.txt AC 499 ms 112892 KiB
subtask_1_12.txt AC 497 ms 107536 KiB
subtask_1_13.txt AC 504 ms 110012 KiB
subtask_1_14.txt AC 504 ms 108436 KiB
subtask_1_15.txt AC 529 ms 114388 KiB
subtask_1_16.txt AC 519 ms 120252 KiB
subtask_1_17.txt AC 508 ms 114220 KiB
subtask_1_18.txt AC 488 ms 106692 KiB
subtask_1_19.txt AC 505 ms 108488 KiB
subtask_1_20.txt AC 534 ms 111708 KiB
subtask_1_21.txt AC 531 ms 122800 KiB
subtask_1_22.txt AC 493 ms 114796 KiB
subtask_1_23.txt AC 510 ms 113640 KiB
subtask_1_24.txt AC 526 ms 113136 KiB
subtask_1_25.txt AC 522 ms 110540 KiB
subtask_1_26.txt AC 498 ms 108636 KiB
subtask_1_27.txt AC 533 ms 108872 KiB
subtask_1_28.txt AC 551 ms 109636 KiB
subtask_1_29.txt AC 559 ms 108844 KiB
subtask_1_30.txt AC 556 ms 109576 KiB
subtask_1_31.txt AC 547 ms 110196 KiB
subtask_1_32.txt AC 545 ms 109100 KiB
subtask_1_33.txt AC 533 ms 109928 KiB
subtask_1_34.txt AC 526 ms 127344 KiB
subtask_1_35.txt AC 557 ms 127336 KiB
subtask_1_36.txt AC 554 ms 127468 KiB
subtask_1_37.txt AC 558 ms 128092 KiB
subtask_1_38.txt AC 555 ms 127412 KiB
subtask_1_39.txt AC 556 ms 127264 KiB
subtask_1_40.txt AC 549 ms 127040 KiB