27 на егэ(№5258 на решу егэ).
дан список точек плоскости с целочисленными координатами. необходимо определить:
1) номер координатной четверти k, в которой находится больше всего точек;
2) количество точек в этой четверти m;
3) точку a в этой четверти, наименее удалённую от осей координат;
3) расстояние r от этой точки до ближайшей оси.
если в нескольких четвертях расположено одинаковое количество точек, следует выбрать ту четверть, в которой величина r меньше. при равенстве и количества точек, и величины r необходимо выбрать четверть с меньшим номером k. если в выбранной четверти несколько точек находятся на одинаковом минимальном расстоянии от осей координат, нужно выбрать первую по списку. точки, хотя бы одна из координат которых равна нулю, считаются не принадлежащими ни одной четверти и не рассматриваются.
описание входных данных
в первой строке вводится одно целое положительное число - количество точек n.
каждая из следующих n строк содержит координаты очередной точки - два целых числа (первое — координата x, второе — координата у).
описание выходных данных
программа должна вывести номер выбранной четверти k, количество точек в ней m, координаты выбранной точки a и минимальное расстояние r по образцу, приведённому ниже в примере.
является ли мое решение на питоне эффективным и есть ли какое-нибудь более простое решение?
собственно программа:
n = int(
coord_1 = {'m': 0, 'a': (0, 0), 'r': 100}
coord_2 = {'m': 0, 'a': (0, 0), 'r': 100}
coord_3 = {'m': 0, 'a': (0, 0), 'r': 100}
coord_4 = {'m': 0, 'a': (0, 0), 'r': 100}
coords = [coord_1, coord_2, coord_3, coord_4]
for i in range(n):
coord = input()
x, y = [int(i) for i in coord.
if x > 0 and y > 0:
coord_1['m'] += 1
if x < coord_1['r'] or y < coord_1['r']:
coord_1['r'] = min(x, y)
coord_1['a'] = (x, y)
elif x == coord_1['r'] or y == coord_1['r']:
if x + y < coord_1['a'][0] + coord_1['a'][1]:
coord_1['a'] = (x, y)
elif x < 0 and y > 0:
coord_2['m'] += 1
if abs(x) < coord_2['r'] or y < coord_2['r']:
coord_2['r'] = min(abs(x), y)
coord_2['a'] = (x, y)
elif abs(x) == coord_2['r'] or y == coord_2['r']:
if abs(x) + abs(y) < abs(coord_2['a'][0]) + coord_2['a'][1]:
coord_2['a'] = (x, y)
elif x < 0 and y < 0:
coord_3['m'] += 1
if abs(x) < coord_3['r'] or abs(y) < coord_3['r']:
coord_3['r'] = min(abs(x), abs(y))
coord_3['a'] = (x, y)
elif abs(x) == coord_3['r'] or abs(y) == coord_3['r']:
if abs(x) + abs(y) < abs(coord_3['a'][0]) + abs(coord_3['a'][1]):
coord_3['a'] = (x, y)
elif x > 0 and y < 0:
coord_4['m'] += 1
if x < coord_4['r'] or abs(y) < coord_4['r']:
coord_4['r'] = min(x, abs(y))
coord_4['a'] = (x, y)
elif x == coord_4['r'] or abs(y) == coord_4['r']:
if abs(x) + abs(y) < coord_4['a'][0] + abs(coord_4['a'][1]):
coord_4['a'] = (x, y)
k = 1; m = coord_1['m']
r = coord_1['r']; a = coord_1['a']
for i in range(1, 4):
if m < coords[i]['m'] or (m == coords[i]['m'] and r > coords[i]['r']):
k = i + 1; r = coords[i]['r']; a = coords[i]['a']
m = coords[i]['m']
print('k =', k)
print('m =', m)
print('a =', a)
print('r =', r)