Submission #24014484


Source Code Expand

import sys
from math import gcd

input = sys.stdin.readline


def cross(a, b):
    return a[0] * b[1] - a[1] * b[0]


def convex_hull(ps):
    ps.sort()
    res = []
    for p in ps:
        while len(res) > 1 and cross((res[-1][0] - res[-2][0], res[-1][1] - res[-2][1]),
                                     (p[0] - res[-1][0], p[1] - res[-1][1])) <= 0:
            res.pop()
        res.append(p)
    t = len(res)
    for p in ps[-2::-1]:
        while len(res) > t and cross((res[-1][0] - res[-2][0], res[-1][1] - res[-2][1]),
                                     (p[0] - res[-1][0], p[1] - res[-1][1])) <= 0:
            res.pop()
        res.append(p)
    res.pop()
    return res


def area2(ps):
    n = len(ps)
    return sum(cross(ps[i], ps[i + 1 - n]) for i in range(n))


def main():
    n = int(input())
    ps = [tuple(map(int, input().split())) for _ in range(n)]
    ch = convex_hull(ps)
    m = len(ch)
    bound_cnt = 0
    for i in range(m):
        p, q = ch[i], ch[i + 1 - m]
        dx = abs(q[0] - p[0])
        dy = abs(q[1] - p[1])
        bound_cnt += gcd(dx, dy)
    inner_cnt = (area2(ch) - bound_cnt + 2) // 2
    print(bound_cnt + inner_cnt - n)


if __name__ == "__main__":
    main()

Submission Info

Submission Time
Task 041 - Piles in AtCoder Farm(★7)
User riantkb
Language Python (3.8.2)
Score 7
Code Size 1215 Byte
Status AC
Exec Time 520 ms
Memory 23768 KiB

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3
Score / Max Score 0 / 0 2 / 2 2 / 2 3 / 3
Status
AC × 5
AC × 10
AC × 18
AC × 29
Set Name Test Cases
Sample 00_sample_0_123.txt, 00_sample_1_123.txt, 00_sample_2_123.txt, 00_sample_3__23.txt, 00_sample_4___3.txt
Subtask1 00_sample_0_123.txt, 00_sample_1_123.txt, 00_sample_2_123.txt, 01_corner_0_123.txt, 01_corner_1_123.txt, 01_corner_2_123.txt, 01_corner_3_123.txt, 02_random_0_123.txt, 02_random_1_123.txt, 02_random_2_123.txt
Subtask2 00_sample_0_123.txt, 00_sample_1_123.txt, 00_sample_2_123.txt, 00_sample_3__23.txt, 01_corner_0_123.txt, 01_corner_1_123.txt, 01_corner_2_123.txt, 01_corner_3_123.txt, 02_random_0_123.txt, 02_random_1_123.txt, 02_random_2_123.txt, 03_corner_0__23.txt, 03_corner_1__23.txt, 03_corner_2__23.txt, 03_corner_3__23.txt, 04_random_0__23.txt, 04_random_1__23.txt, 04_random_2__23.txt
Subtask3 00_sample_0_123.txt, 00_sample_1_123.txt, 00_sample_2_123.txt, 00_sample_3__23.txt, 00_sample_4___3.txt, 01_corner_0_123.txt, 01_corner_1_123.txt, 01_corner_2_123.txt, 01_corner_3_123.txt, 02_random_0_123.txt, 02_random_1_123.txt, 02_random_2_123.txt, 03_corner_0__23.txt, 03_corner_1__23.txt, 03_corner_2__23.txt, 03_corner_3__23.txt, 04_random_0__23.txt, 04_random_1__23.txt, 04_random_2__23.txt, 05_random_0___3.txt, 05_random_1___3.txt, 05_random_2___3.txt, 06_maxima_0___3.txt, 06_maxima_1___3.txt, 06_maxima_2___3.txt, 06_maxima_3___3.txt, 06_maxima_4___3.txt, 06_maxima_5___3.txt, 06_maxima_6___3.txt
Case Name Status Exec Time Memory
00_sample_0_123.txt AC 28 ms 9240 KiB
00_sample_1_123.txt AC 21 ms 9132 KiB
00_sample_2_123.txt AC 21 ms 8992 KiB
00_sample_3__23.txt AC 22 ms 9132 KiB
00_sample_4___3.txt AC 19 ms 9200 KiB
01_corner_0_123.txt AC 20 ms 9128 KiB
01_corner_1_123.txt AC 22 ms 9236 KiB
01_corner_2_123.txt AC 21 ms 9140 KiB
01_corner_3_123.txt AC 25 ms 9244 KiB
02_random_0_123.txt AC 24 ms 8980 KiB
02_random_1_123.txt AC 27 ms 9128 KiB
02_random_2_123.txt AC 20 ms 8996 KiB
03_corner_0__23.txt AC 396 ms 21220 KiB
03_corner_1__23.txt AC 355 ms 22968 KiB
03_corner_2__23.txt AC 38 ms 9328 KiB
03_corner_3__23.txt AC 421 ms 21292 KiB
04_random_0__23.txt AC 325 ms 18132 KiB
04_random_1__23.txt AC 366 ms 18808 KiB
04_random_2__23.txt AC 76 ms 10436 KiB
05_random_0___3.txt AC 113 ms 12024 KiB
05_random_1___3.txt AC 475 ms 22492 KiB
05_random_2___3.txt AC 176 ms 13972 KiB
06_maxima_0___3.txt AC 396 ms 23024 KiB
06_maxima_1___3.txt AC 491 ms 22960 KiB
06_maxima_2___3.txt AC 495 ms 22960 KiB
06_maxima_3___3.txt AC 488 ms 23012 KiB
06_maxima_4___3.txt AC 508 ms 23272 KiB
06_maxima_5___3.txt AC 520 ms 23768 KiB
06_maxima_6___3.txt AC 18 ms 9092 KiB