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 |
|
|
|
|
| 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 |