Разделение королевства.Встроенные структуры данных. Python

Разделение королевства Королевство Флатландия имеет вид бесконечной двумерной плоскости. В королевстве находятся n замков. Для более удобного составления карт в Флатландии была введена Декартова система координат. Известно, что i-й замок находится в точке с координатами (xi+0.5, yi+0.5), где xi, yi — целые числа. Местоположения всех замков попарно различны.

На старости лет король решил разделить на карте королевство между своими сыновьями прямыми, параллельными осям координат. Если прямая параллельна оси Ox, то y координата у всех точек на прямой должна быть целым числом, иначе x координата у всех точек должна быть целым числом. В обоих случаях соответствующие целые координаты по модулю не должны превышать 2⋅10^9. При этом Его величество хочет, что бы после разделения королевства любые два замка оказались бы в различных частях.

Помогите королю разделить королевство, используя не более чем n−1 прямых. У любой пары прямых должно быть не более одной общей точки.

Входные данные

В первой строке задано целое число n (1≤n≤100000) — количество замков в королевстве. В следующих n строках записано по два числа xi и yi (−10^9≤xi≤10^9, −10^9≤yi≤10^9) — целые части координат замков.

Выходные данные

В первой строке выходного файла выведите количество используемых прямых. В следующих строчках выведите сами прямые, по одной в каждой строке. Если прямая параллельна оси Ox, то выведите символ "y", а затем через пробел y координату всех точек на этой прямой, иначе выведите символ "x", а затем через пробел x координату всех точек на этой прямой. Примеры

Ввод

4

0 2

0 3

1 2

1 3

Вывод

2

y 3

x 1

Мой код не проходит по времени. Помогите, пожалуйста.

n = int(input())
 
a = list()

b = list()

x = set()

y = set()

for i in range(n):

    xx, yy = map(int, input().split())

    a.append([xx, yy])

    b.append([yy, xx])

a.sort()

b.sort()

for i in range (n - 1):

    if a[i+1][0] == a[i][0] and a[i+1][1] > a[i][1]:

        y.add(a[i][1] + 1)

    else:

        x.add(a[i][0] + 1)

print(len(x) + len(y))

for i in y:

    print("y " + str(i))

for i in x:

    print("x " + str(i))

Ответы (0 шт):