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)

SabinaLi1001 SabinaLi1001    2   11.08.2019 20:53    92

Другие вопросы по теме Информатика