Donuts

시간 제한30초메모리 제한8 MB

요약
점을 하나씩 추가할 때마다 현재 집합이 정수 중심과 정수 반지름을 가진 도넛인지 판별한다.
난이도

보통10점 중 4점

유형
기하, 해시맵, 수학
정답자
아직 제출이 없습니다

문제

A set S of integer coordinate points in a plane is a donut, if there exists a midpoint (a, b) and two radii L and R (with integer a, b, L, R and non-negative radii) such that S is precisely the set of all points whose distance from (a, b) is in the interval (L, R]. Formally, S = {(x, y) ∈ Z × Z : L < dist((x, y), (a, b)) ≤ R}, where dist denotes standard plane distance.

We begin with an empty set and add points one by one. Determine, after every added point, if the set is currently a donut.

Please note an exceptionally low memory limit (8MB) for this problem.

입력

The first line of input contains the number of points n (2 · 107 ≤ n ¬ 2.5 · 107). Each of the next n lines describes a single added point, giving its coordinates separated by a single space. The coordinates are integers of absolute value not greater than 5000. All the given points are distinct.

출력

For every point output (in a separate line) TAK, if after adding this point the set is a donut, and NIE, if it isn’t.

힌트

The example is given only for explaining the input format, and it obviously does not satisfy the n ≥ 2 · 107 condition (though it satisfies all the others). Your program will not be checked on the example test.

예제1

  1. 예제 1

    입력
    12
    4 1
    3 2
    3 0
    2 3
    1 0
    0 1
    1 2
    2 -1
    2 2
    3 1
    2 0
    1 1
    
    예상 출력
    NIE
    NIE
    NIE
    NIE
    NIE
    NIE
    NIE
    TAK
    NIE
    NIE
    NIE
    TAK